Thanks to visit codestin.com
Credit goes to lib.rs

#opengl #no-std #gleam #graphics

no-std gl-context-loader

Minimal OpenGL function loader for no_std OpenGL contexts

11 releases

Uses old Rust 2015

0.1.10 Nov 12, 2025
0.1.9 Oct 21, 2025
0.1.8 Mar 10, 2022
0.1.7 Aug 14, 2021
0.1.0 Jun 29, 2021

#319 in GUI

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

28,183 downloads per month
Used in 9 crates (4 directly)

Apache-2.0/MIT

270KB
6K SLoC

opengl-function-loader

Defines a struct holding OpenGL function pointers as well as the corresponding functions. Designed for no_std use (with default-features = false).

You are responsible for loading the functions yourself:

fn main() {
    /// ...

    wglMakeContextCurrent(hDC, hRC);

    let context = GenericGlContext {
        glAccum: wglGetProcAddress("glAccum"),
        glActiveTexture: wglGetProcAddress("glActiveTexture"),
        glAlphaFunc: wglGetProcAddress("glAlphaFunc"),
        glAreTexturesResident: wglGetProcAddress("glAreTexturesResident"),
        ...
    };

    // function provided by this library - also available on no_std!
    context.clear_color(0.0, 0.0, 0.0, 0.0);
    context.flush();

    wglMakeContextCurrent(NULL, NULL);
}

If a function pointer is set to 0x00000 (i.e. the function is not loaded), this library will return a "default" value without panicking (i.e. Vec::new(), String::new() or 0). With stdlib support it will print a "missing function: X" to stdout before returning.

If stdlib support is enabled, GenericGlContext implements gleam::Gl!. The point of this is to make it possible to integrate crates that use gleam::Gl with custom OpenGL function pointer loaders while using custom loaders on no_std.

License

The code is somewhat copied from servo/gleam, so it retains the original Apache/MIT license.

Dependencies