#3d-rendering #opengl #3d #webgl #graphics #opengl-rendering #2d-graphics

three-d

2D/3D渲染器 - 使跨平台绘制变得简单(包括网页)

38个版本

0.17.0 2024年2月26日
0.16.3 2023年11月9日
0.15.0 2023年3月14日
0.14.0 2022年11月4日
0.1.0 2020年3月22日

#7 in 渲染

Download history 331/week @ 2024-04-30 348/week @ 2024-05-07 395/week @ 2024-05-14 332/week @ 2024-05-21 389/week @ 2024-05-28 403/week @ 2024-06-04 464/week @ 2024-06-11 655/week @ 2024-06-18 620/week @ 2024-06-25 824/week @ 2024-07-02 1016/week @ 2024-07-09 883/week @ 2024-07-16 1031/week @ 2024-07-23 1132/week @ 2024-07-30 1014/week @ 2024-08-06 970/week @ 2024-08-13

4,250 每月下载量
7 个crate中使用 (6 个直接使用)

MIT 许可证

620KB
14K SLoC

three-d logo

three-d

crates.io Docs.rs Continuous integration MIT licensed

这是什么?

A OpenGL/WebGL/OpenGL ES渲染器,旨在使图形简单,同时仍然具有高效绘制所需内容的强大功能。

three-d

  • 针对那些只想绘制一些东西的人,以及那些想要避免繁琐设置但仍希望获得底层访问权限的人。
  • 使其能够将高级功能与自定义低级实现(例如自定义着色器)相结合。
  • 试图用几行简单的代码完成事情。
  • 旨在尽可能明确,以便您不会感到意外 - 没有隐藏的魔法。
  • 针对桌面、网页和移动设备。

three-d 可以用于

  • 数据可视化
  • 图像处理
  • UI渲染
  • 工具(2D或3D)
  • 游戏(2D或3D)

引用

来自问题、讨论和拉取请求的引用

..., 感谢您编写了如此优秀的3d crate。我能够完成所需的工作,而无需数千行的样板代码。这真是一种乐趣。

我必须说:伙计,你在这个库上做得太棒了!它的性能真的非常出色,使用简单易懂,我非常感激,你使它成为开源!非常感谢。

感谢您制作了如此出色的3d工具,它对我帮助很大,因为大多数基于Rust的3d工具要么太底层,要么是一个完整的游戏引擎,这不符合我的需求。

首先,three-d 对于即使是经验不足的Rust用户来说也是一种乐趣,尽管我确实有一些与OpenGL合作的经验。

感谢您提供如此酷且易于开始的Rust 3D库 :)

嗨,感谢这样一个酷且易于使用的项目!

感谢这个库,到目前为止一直是一种乐趣。

首先,为这个库干得好,因此感谢!

非常感谢这个库,它看起来很棒!

感谢这个伟大的项目。

到目前为止,该项目使用起来非常出色,非常感谢您的时间和奉献。

结构

该仓库包含三个主要模块用于绘图:contextcorerenderer,以及一个可选的 window 模块,用于简化设置。

模块 描述
context 底层渲染模块 - 需要对图形概念有深入了解。它提供了对设置和渲染的完全控制。
core 中级渲染模块 - 需要对图形概念至少有一定的了解。如果您想编写自己的着色器,但不想在设置和错误处理上浪费时间,请使用此模块。它可以与 context 模块中的底层功能结合使用。
renderer 高级渲染模块 - 不需要了解图形概念。如果您只想绘制一些东西,请使用此模块。它提供了渲染不同类型标准对象的功能,并具有不同的着色方式。它可以与 core 模块中的中级功能和 context 模块中的功能无缝结合。
window (需要 "window" 功能) 提供跨平台原生和Web的窗口功能,主要用于简化入门。在某些情况下,可能需要用自定义的 winit 窗口替换默认的 Window,例如在 winit_window 示例中所示。然而,此模块也可以被提供OpenGL或WebGL2图形上下文的一切所替换,例如 winitglutinwasm-bindgeneframe

此外,three-d-asset 仓库使加载、反序列化、序列化和保存3D资产成为可能,例如3D模型、纹理等。请确保使用在 Cargo.toml 中定义的 three-d-asset 的同一版本。

示例

PBR example

可以在 示例文件夹 中找到涵盖大多数功能的几个示例。

在这里,您还可以找到示例概述、构建说明和示例网络版本的链接。

适合特定版本的示例可以在该版本的分支中找到,例如 0.9 版本 的示例可以在 0.9 分支 中找到。

支持

three-d 受支持

  • 在所有主要的桌面操作系统(Windows、Mac、Linux)上,通过使用OpenGL 3.3图形API进行支持。 注意:MacOS已弃用OpenGL,因此它仍然可以工作,但可能不会表现最优。
  • 在所有主要浏览器(Chrome、Firefox、Edge和Safari)上,通过编译为WebAssembly并使用WebGL 2.0图形API进行支持(见 web/README.md
  • 在具有OpenGL ES 3.0支持的内嵌/移动系统上。 注意:这不是定期测试的,请报告任何问题。

项目状态

大多数部分相对稳定,但直到1.0.0版本发布之前,仍可能定期出现重大更改。主分支是正在进行中的,所以如果您想避免太多破坏性更改和功能不工作,请使用发布版本。如果可能且可行,功能将在一个版本中弃用,然后在下一个版本中删除。

贡献

欢迎提出功能请求和错误报告;只需打开一个问题或开始一次讨论。我们非常欢迎贡献;请随时联系我们或直接在 master 分支 上创建拉取请求。为了避免浪费宝贵时间,请在进行重大更改之前先与我们联系。

依赖项

~4–21MB
~258K SLoC