| cmake | ||
| deps/wayland-protocols | ||
| example | ||
| include | ||
| packaging | ||
| profiles | ||
| src | ||
| test | ||
| .clang-format | ||
| .clang-tidy | ||
| .clangd | ||
| .cmake-format | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| LICENSE | ||
| README.md | ||
| suppressions.txt | ||
NDL (Nolen's DirectMedia Library)
C++ cross-platform library that provides a platform-agnostic access to low-level systems, such as windowing and input.
Features:
- Supports creating and managing multiple windows;
- Input events are received per each window.
Limitations:
- Currently only provides access to windowing and input on Windows and Wayland.
See Future plans for more information.
Dependencies
This library makes use of native platform APIs and has NO dependencies.
Obviously, it still depends on platform-specific libraries/tools (e.g. libwayland and wayland-scanner on Wayland).
How to build
Using CMake presets is the easiest way to build the project:
# Check which presets are available.
cmake --list-presets # To see configure presets.
cmake --build --list-presets # To see build presets.
ctest --list-presets # To see test presets.
cpack --list-presets # To see packaging presets.
cmake --workflow --list-presets # To see workflow presets.
Keep in mind, different platforms may have a different list of available presets. Here's an example of how to build the project using "release" preset:
# Use "release" preset to build.
cmake --preset release
cmake --build --preset release
If presets do not cover your use cases, you can use usual cmake workflow to build the project.
With multi-config generators (e.g. MSVC):
cmake . -Bbuild
cmake --build build --config Release
With single-config generators (e.g. Make):
cmake . -Bbuild/Release -DCMAKE_BUILD_TYPE=Release
cmake --build build/Release
Future plans
In future, this library may provide access to other low-level platform-dependent abstractions.
Plans:
- Audio support;
- Touch input support;
- Controller input support;
- GPU-accelerated rendering using Vulkan.
There are no plans to provide GPU-accelerated rendering using OpenGL, DirectX or Metal. GPU-accelerated rendering using Vulkan should be sufficient to cover all GPU-accelerated needs.