1个不稳定版本

0.1.1 2022年7月20日
0.1.0 2022年7月20日

#765图形API

MIT/Apache

160KB
3.5K SLoC

盖勒

盖勒是一个基于wgpu的OpenGL包装器crate。

该crate旨在将无状态图形API(如WebGPU)的许多好处直接带到OpenGL中,以便由于各种原因而无法选择更现代API的项目仍能享受使用它们所带来的许多工作流程优势。

目标

该crate的主要目标是通过消除用户代码与OpenGL全局状态之间的所有直接交互以及跟踪设备内存中对象的所有权和可变性来简化开发工作流程。这还允许gavle在可能出现此类错误的情况下抛出硬错误,从而捕获许多潜在的错误。

该crate还选择了对其提供的功能及其提供方式持更强烈的立场,仅支持一小部分但希望是健壮的功能集。原因有两点:首先,因为在大小一致且安全的方式下支持整个厨房用具对于任何这样的项目来说都是不切实际的,正如Glium所展示的那样;其次,因为它会危及下一个目标:互操作性。

该crate的设计允许用户在Rust支持的每个主要平台(也支持某种形式的OpenGL)上透明地运行相同的图形代码。它可以在WebGL、OpenGL ES以及标准OpenGL之上运行,并且不需要更多操作,只需重新编译和一些提供有效上下文的粘合代码。

非目标

遗憾的是,虽然预料到,但该crate不得不省略许多使现代OpenGL适合高级项目的功能——其中最重要的是SSBOs和计算着色器——因为它们在WebGL中根本不可用。如果您需要这些功能,我强烈建议不要使用此crate。

功能

此crate支持以下功能

  • 跟踪所有GPU对象的所有权和可变性。
  • 垃圾回收GPU对象。
  • 内存映射GPU缓冲区编辑。
  • 完全支持WebGL和OpenGL ES。

致谢

这个crate中的许多结构都是直接从WebGPU借鉴过来的,我认为明确指出这一点很重要。如果没有在那个项目中付出的努力,这个crate的易用性肯定与现在大不相同。

关于版本控制

这个crate最初是作为更大项目的一部分编写的,该项目仍在进行中,尚未发布,因此,这个crate的开发阶段不应仅从其版本号来衡量。

依赖项

~2.7-5MB
~111K SLoC