12个版本
0.2.1 | 2021年3月8日 |
---|---|
0.2.0 |
|
0.1.3 | 2020年9月17日 |
0.1.2 | 2020年8月9日 |
0.0.2 | 2020年7月19日 |
#934 in 图形API
每月145次下载
615KB
6.5K SLoC
这是一个自动生成的Crate
此Crate是来自phosphorus仓库中某个脚本的手动调整输出。
因此,除顶级Crate文档之外,通常不接受对此Crate的其他PR。相反,您应该修改如何使用phosphorus
。
gl46
绑定OpenGL 4.6(以及一些扩展)
有关Crate操作的说明,请参阅Crate文档。
lib.rs
:
使OpenGL 4.6核心API(以及一些扩展)可用。
Crate的接口以“struct”风格的加载器提供。使用适当的“gl_get_proc_address”函数构建一个GlFns
,然后调用其方法。
扩展
- GL_ARB_texture_filter_anisotropic
- GL_ARB_bindless_texture
- GL_ARB_sparse_texture
- GL_ARB_pipeline_statistics_query
Cargo功能
track_caller
:在可能引发panic的任何函数上启用track_caller属性。具体来说,结构加载器的扩展函数可能没有加载,如果在未加载的情况下调用它们,则会引发panic。
gl_get_proc_address
GL通常必须在运行时动态加载。这是通过一个我们称之为“gl_get_proc_address”的函数来完成的。此函数的预期操作非常简单:调用者传递一个指向以null结尾的字符串的指针,该字符串包含一个GL函数的名称,然后gl_get_proc_address
返回该函数的指针。
获取适当的gl_get_proc_address
函数的方式依赖于平台。
- 在使用Win32时,您需要使用wglGetProcAddress来获取OpenGL 1.1之后的任何函数,以及在打开的
HMODULE
上使用GetProcAddress来获取"OpenGL.dll"中的任何OpenGL函数(1.1或1.0)。这听起来有点荒谬,但确实是这样的。 - 在使用SDL2时,您将调用SDL_GL_GetProcAddress,或SDL2绑定中的等效函数。
- 在使用glutin时,您将调用Context::get_proc_address
创建GLFns
的函数接受一个&dyn Fn(*const u8) -> *const c_void
类型的参数。请注意前面的&dyn
部分。除了将闭包传递给构造函数(|x| { ... }
)外,通常您需要使用一个&
来将闭包转换为&dyn
值。就像这样
use gl46::*;
let gl = unsafe { GlFns::load_from(&|u8_ptr| SDL_GL_GetProcAddress(u8_ptr.cast())).unwrap() };
这听起来可能有点荒谬,但它确实有助于减少重新编译时间,而且只需多写一个&
。
内联
此crate不使用#[inline]
属性。如果您想要完全内联,只需在您的cargo配置文件中启用链接时间优化。
[profile.release]
lto = "thin"