#opengl-context #opengl #graphics #no-std #gleam

no-std gl-context-loader

无 std 的 OpenGL 函数加载器

9 个版本

使用 Rust 2015 版本

0.1.8 2022 年 3 月 10 日
0.1.7 2021 年 8 月 14 日
0.1.4 2021 年 7 月 12 日
0.1.0 2021 年 6 月 29 日

#528 in GUI

49 次每月下载
用于 azul-webrender

Apache-2.0/MIT

265KB
6K SLoC

opengl-function-loader

定义了一个包含 OpenGL 函数指针及其对应函数的结构体。专为 no_std 使用设计(使用 default-features = false)。

您需要自行加载函数

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);
}

如果函数指针设置为 0x00000(即函数未加载),则此库将返回一个 "默认" 值而不引发恐慌(即 Vec::new()String::new()0)。启用 stdlib 支持时,它将在返回之前将 "缺少函数:X" 打印到 stdout。

如果启用 stdlib 支持,GenericGlContext 实现 gleam::Gl 这的目的是在 no_std 上使用自定义加载器的同时,使使用 gleam::Gl 的 crate 能够集成。

许可证

代码部分复制自 servo/gleam,因此保留了原始的 Apache/MIT 许可证。

依赖项