#opengl #glfw #windowing #glad #graphics #extension

min_gl

使用 glfw 和 glad 的 OpenGL 应用程序的最小样板代码

4 个版本 (2 个重大更改)

0.3.0 2022年2月19日
0.2.0 2022年2月17日
0.1.1 2022年2月17日
0.1.0 2022年2月16日

#22 in #glfw

MIT/Apache

1MB
13K SLoC

min_gl


这是一个小型库,它将 glfwglad 结合起来处理样板代码。用户只需要创建一个 Display,它作为一个智能指针初始化和终止必要的组件。因此,在 Display 的生命周期内,可以自由地调用 OpenGL 调用,而不需要任何其他设置。


示例

use glfw::WindowEvent;
use min_gl::{gl, Display, Options};

fn main() {
    // Assume this is some application state.
    let mut event_count = 0u32;

    // Just create and done!
    // All library initialization and window creation is handled.
    // They panic if an error occurs.
    let mut disp = Display::new(
        // No defaults; you cannot miss anything!
        Options {
            width: 1280,
            height: 720,
            title: "Display Test".into(),
            fullscreen: false,
            decorated: true,
            msaa: Some(16),
            vsync: true,
        },
        // WindowEvent handling...
        |event| {
            event_count += 1; // Closure can modify state (FnMut).

            match event {
                WindowEvent::Key(k, _, a, _) => println!("Key `{:?}` is {:?}ed!", k, a),
                e => println!("Some {:?} happened!", e),
            }
        },
    );

    // Of course, you can go with more complicated main loops.
    while !disp.window().should_close() {
        // All window events...
        disp.update();

        /* ~~~~ drawing start ~~~~ */

        gl::ClearColor(0.7, 0.5, 0.6, 1.0);

        /* ~~~~ drawing end ~~~~ */

        disp.render();
    }

    // No clean up; thanks to idomatic glfw-rs!
    // OpenGL calls are not valid after `disp` is dropped!
    println!("In total {} window events happened!", event_count);
}

Glad 22022年2月16日 使用以下选项

  • 生成器:Rust
  • APIs:gl; 版本 4.6 Core
  • 扩展:所有
  • 选项:无

永久链接


版权 (C) 2022 Cem Geçgel [email protected]

依赖项

~2MB
~44K SLoC