Skip to content

MobileGL-Dev/MobileGL

Repository files navigation

MobileGL

C++ GNU LGPL 2.1 Development

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).

Project positioning

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.

Key components

The repository is organized into a small number of top-level modules:

  1. MG_State — the OpenGL state machine and related state-management code.
  2. MG_Impl — the front-end OpenGL function implementations that mainly use MG_State and MG_Backend.
  3. MG_Backend — backend implementations that perform actual rendering. Example backend: Direct (OpenGL ES) backend.
  4. MG_Util and other utility modules.

Third-party components

MobileGL reuses several established 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: Implement OpenGL 3.3 (Core Profile).
  • Current development focus: MG_State and MG_Impl for OpenGL 3.3 (Core Profile), and a Direct (OpenGL ES) backend implementation. These components are incomplete.

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

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

Notice

  • 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.

License

This project is distributed under GNU LGPL v2.1. See the LICENSE file in the repository for the full text.