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 中
每月28,531次下载
在 324 个软件包中使用(直接使用 162 个)
24KB
282 行
gl-rs
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