| .woodpecker | ||
| cmake | ||
| deps/wayland-protocols | ||
| example | ||
| include | ||
| infra/container/linux-buildtools | ||
| packaging | ||
| src | ||
| test | ||
| .clang-format | ||
| .clang-tidy | ||
| .clangd | ||
| .cmake-format | ||
| .gitignore | ||
| CMakeLists.txt | ||
| 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.
Currently supported platforms:
- Wayland;
- Windows.
Features:
- Supports creating and managing multiple windows;
- Input events are received per each window.
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.
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).
Building
Use the usual cmake workflow to build the project.
With multi-config generators (e.g. MSVC):
cmake . -Bbuild
cmake --build build --config Release -j0
With single-config generators (e.g. Make/Ninja):
cmake . -Bbuild/Release -DCMAKE_BUILD_TYPE=Release
cmake --build build/Release -j0
Testing
To run tests, use ctest after building:
# Adjust according to build directory.
ctest --test-dir=build/Release --output-on-failure --schedule-random -j0
Packaging
To create a package, use cpack after building:
# Adjust according to build directory.
cpack --config build/Release/CPackConfig.cmake