1 个不稳定版本
0.6.6 | 2024年7月21日 |
---|
#275 in 游戏开发
154 每月下载量
在 2 crates 中使用
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项目开发者使用的cgmath
和euclid
借用来的。最后,值得提到的是,Raph Levien的druid
为UI代码和一些数学代码提供了灵感。
许可证
双重许可,使用MIT和Apache协议。
参考文献
依赖项
~4–12MB
~154K SLoC