Skip to content

MobileGL-Dev/MobileGL

MobileGL

C++ GNU LGPL 3.0 Development

A desktop OpenGL implementation

MobileGL is a free and open-source project that implements a desktop OpenGL API. The goal is to provide a complete desktop OpenGL implementation with a state management layer and multi-backend support.

Note

Status: In development. Parts of the codebase are incomplete. Current short-term target: OpenGL 3.3 (Core Profile).

Project positioning

MobileGL is an implementation of a desktop OpenGL library. It aims to provide:

  • Full OpenGL state management.
  • A front-end that exposes OpenGL functions.
  • Multiple independent backend implementations, where each backend targets a specific graphics API and remains fully isolated from others.

This project is intended as an implementation/translation layer.

Key components

The repository is organized into following top-level modules:

  1. MG_State — state tracking and management logic for Graphics APIs.
  2. MG_Impl — front-end implementations of Graphics APIs that interact with MG_State and MG_Backend.
  3. MG_Backend — per-backend translation layer that maps front-end Graphics APIs' semantics and state into concrete backend API calls (e.g. OpenGL ES, Vulkan).
  4. MG_Util and other utility modules.

Third-party components

MobileGL reuses several open-source projects:

Refer to each component's repository for exact license texts. Any bundled third-party code in this repository is included under the upstream project's license.

Compatibility & target

  • Short-term target: OpenGL 3.3 (Core Profile).
  • Current development focus:
    • MG_State and MG_Impl for OpenGL 3.3 (Core Profile)
    • Direct (Vulkan) backend
    • Direct (OpenGL ES) backend

Build Instructions

We currently provide no releases and no precompiled binaries.
If you want to try the project right now, you’ll need to build it yourself:

  1. Clone the repository:

    git clone https://github.com/MobileGL-Dev/MobileGL.git
  2. Initialize and update all submodules recursively:

    git submodule update --init --recursive
  3. Follow glslang’s own documentation for its required initiation.

  4. Configure and build the project with CMake:

    cmake -B build
    cmake --build build

    or do it in a modern way:

    cmake -S . -B build -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
    cmake --build build

    Alternatively, you can use platform-specific build commands as needed.

Build Options

Option Description Default
MOBILEGL_BUILD_TEST Build MobileGL tests (requires Clang) ON
MOBILEGL_BUILD_BENCHMARK Build MobileGL benchmarks (requires Clang) ON
MOBILEGL_FORCE_RELEASE_OPT Enable O3 and LTO in Debug build ON
MOBILEGL_ENABLE_TRACY Enable Tracy profiler for performance analysis OFF

Notes:

  • The project requires C++23.
  • MG_Test and MG_Benchmark can only be built with Clang, not GCC. To enforce Clang, add -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ to your command.
  • On Android, tests and benchmarks are always disabled.

Notice

  • MobileGL is not production-ready currently.
  • Some OpenGL 3.3 (Core Profile) features are still missing or under development.

License

This project is distributed under GNU LGPL v3.0. See the LICENSE file in the repository for detailed information.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages