30 个版本

使用旧的 Rust 2015

0.14.0 2019年10月3日
0.13.0 2019年7月9日
0.12.0 2019年4月1日
0.11.0 2018年11月4日
0.0.1 2014年11月12日

#188图形API

Download history 7283/week @ 2024-04-23 6675/week @ 2024-04-30 6001/week @ 2024-05-07 6662/week @ 2024-05-14 7011/week @ 2024-05-21 7611/week @ 2024-05-28 6701/week @ 2024-06-04 5928/week @ 2024-06-11 6654/week @ 2024-06-18 6161/week @ 2024-06-25 3245/week @ 2024-07-02 5977/week @ 2024-07-09 7064/week @ 2024-07-16 6291/week @ 2024-07-23 6446/week @ 2024-07-30 7535/week @ 2024-08-06

每月28,531次下载
324 个软件包中使用(直接使用 162 个)

Apache-2.0

24KB
282

gl-rs

Version License Downloads

Rust编程语言的OpenGL函数指针加载器。

[dependencies]
gl = "0.6.0"

基本用法

您可以通过以下方式导入指针样式加载器和类型别名

extern crate gl;
// include the OpenGL type aliases
use gl::types::*;

您必须使用 load_with 函数将函数指针加载到相应的函数指针中。您必须提供一个来自您上下文库的加载器函数,以下是如何使用 [glfw-rs] (https://github.com/PistonDevelopers/glfw-rs) 的示例

// the supplied function must be of the type:
// `&fn(symbol: &'static str) -> *const std::os::raw::c_void`
// `window` is a glfw::Window
gl::load_with(|s| window.get_proc_address(s) as *const _);

// loading a specific function pointer
gl::Viewport::load_with(|s| window.get_proc_address(s) as *const _);

调用尚未加载的函数将导致失败,例如:panic!("gl::Viewport 未加载"),这避免了段错误。这个特性不会引起任何运行时开销,因为只有当调用 load_with 时才会分配失败的函数。

// accessing an enum
gl::RED_BITS;

// calling a function
gl::DrawArrays(gl::TRIANGLES, 0, 3);

// functions that take pointers are unsafe
unsafe {  gl::ShaderSource(shader, 1, &c_str, std::ptr::null()) };

每个函数指针都有一个关联的布尔值,允许您在运行时检查函数是否已加载。该函数访问当调用 load_with 时设置的相应全局布尔值,因此不应该有很大的开销。

if gl::Viewport::is_loaded() {
    // do something...
}

变更日志

v0.6.0

  • 升级到 gl_generator v0.5.0

v0.5.2

  • 更新软件包元数据

v0.5.1

  • khronos_api 升级到 v1.0.0

v0.5.0

  • 使用 glutin 作为示例
  • 使用 raw::c_void 作为 GLvoid

无运行时依赖

~94KB