A desktop OpenGL implementation
MobileGL is a free (libre) and open-source project that implements a desktop OpenGL API. The goal is to provide a complete OpenGL implementation with a state management layer and multiple backends.
Note
Status: In development. Parts of the codebase are incomplete. Current short-term target: OpenGL 3.3 (Core Profile).
MobileGL is a ground-up implementation of a desktop OpenGL library. It aims to provide:
- Full OpenGL state management.
- A front-end that exposes OpenGL functions.
- Pluggable backends so the same front-end and state machine can run on different graphics backends.
This project is intended as an implementation/translation layer; it is not a driver nor a GPU firmware replacement currently.
The repository is organized into a small number of top-level modules:
- MG_State — the OpenGL state machine and related state-management code.
- MG_Impl — the front-end OpenGL function implementations that mainly use
MG_StateandMG_Backend. - MG_Backend — backend implementations that perform actual rendering. Example backend:
Direct (OpenGL ES)backend. - MG_Util and other utility modules.
MobileGL reuses several established open-source projects:
- SPIRV-Cross by KhronosGroup - Apache License 2.0: github
- glslang by KhronosGroup - Various Licenses: github
- DiligentCore by Diligent Graphics - Apache License 2.0: github
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.
- Short-term target: Implement
OpenGL 3.3 (Core Profile). - Current development focus: MG_State and MG_Impl for
OpenGL 3.3 (Core Profile), and aDirect (OpenGL ES)backend implementation. These components are incomplete.
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:
-
Clone the repository:
git clone https://github.com/MobileGL-Dev/MobileGL.git
-
Initialize and update all submodules recursively:
git submodule update --init --recursive
-
Follow glslang’s own documentation for its required initiation.
-
Configure and build the project with CMake:
cmake -B build cmake --build build
Alternatively, you can use platform-specific build commands as needed.
- MobileGL is not production-ready currently.
- Many features required by a full OpenGL 3.3 implementation are still missing or incomplete.
- Performance optimizatins are now almost missing.
This project is distributed under GNU LGPL v2.1. See the LICENSE file in the repository for the full text.