Skip to content

tobanteAudio/moci

Repository files navigation

tobanteAudio - moci

General purpose application library. Currently supports desktop & mobil OpenGL. Runs on devices which only support OpenGLES 2.0.

Status

License macOS Windows Linux Coverage Emscripten
License macOS Windows Linux codecov Emscripten

Quick Start

  • C++20
  • CMake >= 3.21
  • Ninja Build

Clone with submodules:

git clone --recursive https://github.com/tobanteAudio/moci.git

macOS & Linux

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

Windows (Visual Studio)

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

Features

  • Application
    • Cross platform window creation. Currently based on GLFW.
  • Rendering
    • ImGui integration
    • 2D batch renderer
    • Custom shaders, buffers & textures
    • Fonts
  • Geometry
    • Basic shapes & transformations, using glm.
  • Network
    • Cross platform UDP socket listen & write
  • System
    • Query CPU & OS information
  • Debug
    • Create profiles readable by Chrome tracing.

Long Term Goals

  • Application
    • Native windowing APIs.
  • Audio
    • Native sound APIs.
    • Audio Plugins. (VST3, AudioUnit)
  • Rendering
    • Vulkan, DirectX & Metal. (Priority as listed)

Development

Dependencies (submodules)

Module Dependencies

Dependencies Linux

Look at the circleci config in .circleci/config.yml for Ubuntu packages. Otherwise just try building the project. CMake will tell you whats missing.

clang-tidy

Two options. Somehow not all headers are found in either option:

./scripts/moci-clang-tidy.sh

About

General purpose application engine.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published