8个重大版本发布
使用旧的Rust 2015
0.9.0 | 2019年2月12日 |
---|---|
0.8.0 | 2018年11月13日 |
0.7.0 | 2018年4月16日 |
0.6.0 | 2017年12月30日 |
0.1.1 | 2016年3月26日 |
#1031 in 图形API
90 每月下载量
5MB
11K SLoC
文档 | LearningGfx教程 | Graphics By Squares教程 | 博客
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。
要了解如何获取图形上下文,请参阅 cube 示例 或 triangle 示例。
例如,要使用 glutin
,您的 Cargo.toml
必须扩展以下依赖项
[dependencies]
...
glutin ="*"
gfx_window_glutin = "*"
或者,有关 gfx 和其相关 crate 的出色介绍,请参阅 此处。
结构和当前版本
gfx
由几个 crate 组成。您可以在本仓库中找到它们的所有内容。
核心功能 | 图形后端 | 窗口后端 |
---|---|---|
注意
gfx
仍在开发中。API 可能会随着要实现的新后端/功能而更改。如果您有兴趣提供帮助,请查看 contrib.md 并不要犹豫在 Gitter 上联系开发者。
依赖项
~7–21MB
~289K SLoC