51个版本

使用旧的Rust 2015

0.18.3 2023年2月27日
0.18.2 2019年10月3日
0.18.1 2019年4月25日
0.18.0 2019年2月12日
0.2.4 2015年3月14日

图形API中排名698

Download history 3117/week @ 2024-03-14 3922/week @ 2024-03-21 3973/week @ 2024-03-28 3574/week @ 2024-04-04 3686/week @ 2024-04-11 3660/week @ 2024-04-18 3999/week @ 2024-04-25 3182/week @ 2024-05-02 3277/week @ 2024-05-09 3476/week @ 2024-05-16 3553/week @ 2024-05-23 3821/week @ 2024-05-30 3200/week @ 2024-06-06 2867/week @ 2024-06-13 3207/week @ 2024-06-20 2343/week @ 2024-06-27

每月下载量12,063
在不到59 个框架中使用

Apache-2.0

305KB
5.5K SLoC

Documentation on docs.rs Travis Build Status AppVeyor Build Status gfx on crates.io Gitter Chat
文档 | LearningGfx教程 | 通过方块学习图形教程 | 博客

gfx-rs

gfx是Rust编程语言的一个高性能、无绑定的图形API。它旨在成为Rust图形的默认API:用于单次应用程序,或更高层次的库或引擎。

动机

  • 图形API大多是为C和C++设计的,因此它们是危险的且易于出错,静态安全性保证很少。
  • 在平台特定API周围提供类型安全的包装器是可行的,但这只是将平台独立性问题推向更高的抽象层次,通常是游戏或渲染引擎。
  • 现代图形API虽然提供了很高的灵活性和高性能,但通常比传统的固定功能API的入门门槛高得多。
  • 像OpenGL这样的图形API仍然需要开发人员绑定和解绑对象以对其进行操作。这导致了大量的样板代码,并带来了与全局状态相关的问题。

功能

图形后端

硬件特性

  • 离屏渲染目标
  • 多重采样
  • 实例化
  • 几何着色器
  • 曲面细分
  • 计算
  • 持久映射

谁在使用它?

最大的开源项目包括

闪亮的屏幕,包括一些旧项目

Hematite LazyBox Vange-rs Claymore ZoC 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 可以使用其中的一些来获取图形上下文。例如;glfwglutin

要了解如何获取图形上下文,请参阅 立方体示例三角形示例

例如,要使用 glutin,您的 Cargo.toml 必须扩展以下依赖项

[dependencies]
...
glutin ="*"
gfx_window_glutin = "*"

或者,您可以在 这里 找到关于 gfx 和其相关包的优秀介绍。

结构和当前版本

gfx 包含多个 crate。您可以在本仓库中找到它们。

核心功能 图形后端 窗口后端
gfx on crates.io gfx_device_gl on crates.io gfx_window_sdl on crates.io
gfx_app on crates.io gfx_device_dx11 on crates.io gfx_window_dxgi on crates.io
gfx_core on crates.io gfx_device_metal on crates.io gfx_window_glfw on crates.io
gfx_macros on crates.io gfx_device_vulkan on crates.io gfx_window_metal on crates.io
gfx_window_glutin on crates.io
gfx_window_vulkan on crates.io

注意

gfx 仍在开发中。API 可能会随着要实现的新后端/功能而更改。如果您有兴趣帮忙,请查阅 contrib.md 并在 Gitter 上联系开发者。

依赖项

~140–360KB