1 个不稳定版本

0.6.6 2024年7月21日

#275 in 游戏开发

Download history 124/week @ 2024-07-21 30/week @ 2024-07-28

154 每月下载量
2 crates 中使用

MIT/Apache

225KB
6K SLoC

Ombre

在星空微光中诞生的阴影...

概述

Ombre是一个“新泽西”风格的^0库,专为桌面上的游戏和图形编程设计。

它提供了对底层上下文创建和图形框架的轻量级抽象,同时将依赖性降至最低,并尽量做好它所做的一些事情。Ombre还支持各种简单文件格式,这些格式旨在易于编码和解码。这与更流行的格式(如PNG和TTF)形成对比,这些格式可能需要外部库。

尽管如此,Ombre并非作为一个“玩具”库。性能、稳定性、灵活性和开发友好性都不会妥协。尽管选择了某些默认选项,例如图形后端,但用户可以轻松地更换后端,以便更适合其目标平台。

特性

  • 使用 glfw^1 创建上下文和处理输入
  • sokol-gfx^2 启发的图形API
  • 使用 glow^3 的OpenGL 3.3后端实现跨平台
  • 支持UF1和UF2字体的位图字体渲染^4
  • 使用简单的RGBA (.rgba) 文件格式进行图像编码和解码
  • 计算机图形 math 模块,包含2D和3D向量和变换
  • 颜色类型和函数

原因

  • 由于所有主要平台都支持OpenGL 3.3,并且在未来可预见的时期内将支持,因此没有理由要针对其他任何东西。使用 glow crate,因为它简单、可移植,并且具有基本的类型安全性。
  • 对于上下文创建和输入处理,选择了成熟且稳定的GLFW,同时保持最小化,并提供最大程度的灵活性,而不剥夺用户的控制权。
  • 由于TTF和PNG等流行字体和图像格式的复杂性以及低附加值,因此明确不支持。
  • 为了避免依赖另一个废弃的数学库,并为了提供最佳体验,自行实现了3D数学。
  • 尝试使用单个API支持所有平台,包括Web和移动设备,必然会导致泄露平台细节。我们通过专注于OpenGL和桌面图形来避免这种情况。

致谢

该库的大部分内容是从Fedor Logachev的miniquad改编而来,而miniquad本身是从Andre Weissflog的sokol改编而来。此外,3D数学代码大部分是从Servo项目开发者使用的cgmatheuclid借用来的。最后,值得提到的是,Raph Levien的druid为UI代码和一些数学代码提供了灵感。

许可证

双重许可,使用MIT和Apache协议。

参考文献

依赖项

~4–12MB
~154K SLoC