General purpose application library. Currently supports desktop & mobil OpenGL. Runs on devices which only support OpenGLES 2.0.
License | macOS | Windows | Linux | Coverage | Emscripten |
---|---|---|---|---|---|
- C++20
- CMake >= 3.21
- Ninja Build
Clone with submodules:
git clone --recursive https://github.com/tobanteAudio/moci.git
Running the Makefile
builds the project with your default compiler & ninja.
# Link against desktop OpenGL.
CONFIG=Debug make
# Same as
CONFIG=Debug make config build test
# Link against OpenGLES 2.0. This also excludes glew from being build.
CONFIG=Debug make config-gles build test
Running the Makefile
builds the project Visual Studio.
# Link against desktop OpenGL.
CONFIG=Debug make config-vs build test
# or
CONFIG=Release make config-vs build test
- Application
- Cross platform window creation. Currently based on
GLFW
.
- Cross platform window creation. Currently based on
- Rendering
ImGui
integration- 2D batch renderer
- Custom shaders, buffers & textures
- Fonts
- Geometry
- Basic shapes & transformations, using
glm
.
- Basic shapes & transformations, using
- Network
- Cross platform UDP socket listen & write
- System
- Query CPU & OS information
- Debug
- Create profiles readable by
Chrome
tracing.
- Create profiles readable by
- Application
- Native windowing APIs.
- Audio
- Native sound APIs.
- Audio Plugins. (VST3, AudioUnit)
- Rendering
- Vulkan, DirectX & Metal. (Priority as listed)
- assimp: 3D Model loader
- Catch2: Unit tests
- freetype: Font loader
- glew: OpenGL function loader
- glfw: Cross platform window library
- glm: Math library
- imgui: GUI library
- spdlog: Logging
- stb: Image file loader
Look at the circleci
config in .circleci/config.yml
for Ubuntu packages. Otherwise just try building the project. CMake will tell you whats missing.
Two options. Somehow not all headers are found in either option:
./scripts/moci-clang-tidy.sh