Skip to content
This repository has been archived by the owner on Mar 27, 2021. It is now read-only.
/ musubi Public archive

Simple application framework in modern C++. Written from scratch for maximum usability.

License

Notifications You must be signed in to change notification settings

svby/musubi

Repository files navigation

musubi

Simple application framework in modern C++. Written from scratch for maximum usability.

Building

mkdir build
cd build
cmake .. && make all install

This will install libmusubi to /usr/local by default.

musubi requires C++17 features and support for older standards is not a goal. It will likely make extensive use of C++20 (concepts, ranges, std::format, std::numbers, consteval, ...) once the standard is published in the near future.

Currently, the library compiles and the sample runs fine on both Clang and GCC.

Note: The CMake scripts for this project assume SDL2 2.0.8 (March 2018) or later is installed. Earlier versions of SDL do not configure a SDL2::SDL2 target, which musubi tries to import.

Particularly of note is that Ubuntu's current version of libsdl2-dev (as of eoan) suffers from this issue; building/installing SDL2 from source is required here. Rolling-release distributions (such as Arch or Gentoo) are up-to-date and therefore unaffected.

Components

libmusubi

libmusubi is the main "engine" component and currently consists of:

  • graphics abstractions
    • windowing (SDL2)
    • pixmaps
    • rendering
      • shapes (OpenGL)
      • textures (OpenGL)
  • lifecycle abstractions
    • an application owns windows, which own screens
  • asset packing & managing
    • assets are automatically packed in xz archives by mpack.py, and can be loaded and read at runtime
    • extensible asset loading mechanism

Currently, libmusubi will assume and request OpenGL 3.3 or greater by default. No abstractions for versions older than 3.0 are planned, due to API differences.

Once the default API is stable enough, all OpenGL abstractions will be given an abstract base type so they will be easy to swap out with other implementations (i.e. other OpenGL versions, possibly even other rendering APIs).

Documentation

Documentation is generated using Doxygen. To link to standard-library documentation, the cppreference.com tag file can be placed in the directory from with doxygen is run.

Doxygen is invoked by a GitHub workflow on every commit to master; the generated content is pushed to GitHub pages.

License

musubi is licensed under the LGPL (version 3).

Licenses for its source dependencies are located in licenses/.

Dependencies

Build scripts

libmusubi

About

Simple application framework in modern C++. Written from scratch for maximum usability.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published