2个版本

0.6.7 2023年12月10日
0.6.6 2023年12月10日
0.1.0 2023年12月10日

#55 in 渲染

MIT/Apache

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项目开发者借用的cgmatheuclid。最后,值得一提的是,Raph Levien的druid为UI代码和一些数学代码提供了灵感。

许可

双许可,MIT和Apache。

依赖项

~4–13MB
~156K SLoC