51个版本
使用旧的Rust 2015
0.18.3 | 2023年2月27日 |
---|---|
0.18.2 | 2019年10月3日 |
0.18.1 | 2019年4月25日 |
0.18.0 |
|
0.2.4 | 2015年3月14日 |
在图形API中排名698
每月下载量12,063
在不到59 个框架中使用
305KB
5.5K SLoC
文档 | LearningGfx教程 | 通过方块学习图形教程 | 博客
gfx-rs
gfx
是Rust编程语言的一个高性能、无绑定的图形API。它旨在成为Rust图形的默认API:用于单次应用程序,或更高层次的库或引擎。
动机
- 图形API大多是为C和C++设计的,因此它们是危险的且易于出错,静态安全性保证很少。
- 在平台特定API周围提供类型安全的包装器是可行的,但这只是将平台独立性问题推向更高的抽象层次,通常是游戏或渲染引擎。
- 现代图形API虽然提供了很高的灵活性和高性能,但通常比传统的固定功能API的入门门槛高得多。
- 像OpenGL这样的图形API仍然需要开发人员绑定和解绑对象以对其进行操作。这导致了大量的样板代码,并带来了与全局状态相关的问题。
功能
图形后端
- OpenGL 2.1+
- OpenGL ES2+ (在Android以及WebGL2上工作)
- Direct3D 11
- Metal (WIP 75%)
Vulkan (WIP 40%)
硬件特性
- 离屏渲染目标
- 多重采样
- 实例化
- 几何着色器
- 曲面细分
- 计算
- 持久映射
谁在使用它?
最大的开源项目包括
- Amethyst 引擎
- ggez 引擎
- Piston 引擎 - 2d 图形
- LazyBox 引擎
- Zone of Control 游戏
- Vange-rs 游戏
- Claymore 游戏/引擎
- Rust-oids 游戏
闪亮的屏幕,包括一些旧项目
入门
gfx-rs 的 git 仓库包含了许多示例。如果您克隆了 gfx 目录,这些示例会自动下载。
$ cd <my_dir>
$ git clone https://github.com/gfx-rs/gfx
其中 <my_dir>
是您选择的目录名。下载 gfx 后,您可以构建任何 gfx 示例。这些示例在 <my_dir>/gfx/Cargo.toml
文件中列出。例如,尝试
$ cd gfx
$ cargo run --example cube
如果您第一次编译示例,由于必须编译所有依赖项,可能需要一些时间。
如果您想构建自己的独立 gfx 程序,请在新的 Cargo.toml
中添加以下内容
[dependencies]
gfx = "0.18"
为了使 gfx 能够工作,它需要访问操作系统的图形系统。这通常通过某些窗口初始化 API 提供。gfx 可以使用其中的一些来获取图形上下文。例如;glfw 或 glutin。
要了解如何获取图形上下文,请参阅 立方体示例 或 三角形示例。
例如,要使用 glutin
,您的 Cargo.toml
必须扩展以下依赖项
[dependencies]
...
glutin ="*"
gfx_window_glutin = "*"
或者,您可以在 这里 找到关于 gfx 和其相关包的优秀介绍。
结构和当前版本
gfx
包含多个 crate。您可以在本仓库中找到它们。
核心功能 | 图形后端 | 窗口后端 |
---|---|---|
注意
gfx
仍在开发中。API 可能会随着要实现的新后端/功能而更改。如果您有兴趣帮忙,请查阅 contrib.md 并在 Gitter 上联系开发者。
依赖项
~140–360KB