2个版本
0.6.7 | 2023年12月10日 |
---|---|
0.6.6 | 2023年12月10日 |
0.1.0 |
|
#55 in 渲染
185KB
5K 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
包是因为其简单性、可移植性和基本的类型安全性。 - 对于上下文创建和输入处理,选择了成熟且稳定的GLFW,同时保持最小化,提供最大灵活性,而不剥夺用户的控制权。
- 由于复杂性和低附加值,流行的字体和图像格式(如TTF和PNG)明确不支持。
- 3D数学是在内部实现的,以避免依赖于另一个废弃的数学库,并提供最佳体验。
- 尝试使用单个API支持包括网页和移动设备在内的所有平台,必然会导致平台细节泄露。我们通过专注于OpenGL和桌面图形来避免这种情况。
致谢
这个库的大部分内容是从Fedor Logachev的miniquad
改编的,而miniquad本身是Andre Weissflog的sokol
改编的。此外,大部分3D数学代码是从Servo项目开发者借用的cgmath
和euclid
。最后,值得一提的是,Raph Levien的druid
为UI代码和一些数学代码提供了灵感。
许可
双许可,MIT和Apache。
依赖项
~4–13MB
~156K SLoC