6 个版本
0.3.2 | 2024 年 6 月 20 日 |
---|---|
0.3.1 | 2023 年 12 月 9 日 |
0.3.0 | 2023 年 3 月 22 日 |
0.2.0 | 2022 年 7 月 19 日 |
0.1.1 | 2021 年 3 月 10 日 |
#123 in 图形 API
167 每月下载次数
390KB
279 行
fontdue-sdl2
一个用于使用 sdl2::render 绘制文本的包,使用 fontdue 进行光栅化。这是一个粘合包,所有好的部分都来自上述库。
创建此包的动机是为了在使用 SDL2 渲染模块的项目中实现比 sdl2_ttf 更容易、更 Rust 化和更高质量的文本渲染。
注意,fontdue 已经是一个“完整的文本渲染解决方案”,它是一个非常面向应用的包。创建此包的原因是我不需要为每个我工作的 SDL2 项目编写一个文本渲染缓存,这部分内容在 fontdue 中可能没有实现,因为它可能取决于渲染技术。这是 fontdue + SDL2 的解决方案。
文档
在 docs.rs 上阅读文档。
与 sdl2_ttf 相比
此库将每个字形作为自己的四边形绘制,从一个单独的字形缓存纹理。在现代 GPU 上,这非常快,因为它可以在单个绘制调用中完成。通过将此库的结果渲染到渲染纹理中,仍然可以实现按文本区域缓存。
性能和不足之处
当前,在字形缓存纹理上预留空间与之前分配的字形数量成比例,因此随着时间的推移会变慢。一些临时测试表明,在发布版本中,每个字形的处理时间约为 20 微秒,在调试版本中约为 200 微秒,对于不同大小的几段文本。然而,这很少严重影响整体性能,因为只需要为每个字符/大小/颜色/字体组合执行一次。但仍有很多优化空间。
目前,该包仍在开发中,因此还有一些功能尚未实现
- 字形缓存纹理不能动态调整大小,纹理始终为 1024x1024。
- 无法覆盖未使用的字形,写入的字形将永久存在于缓存中。
删除未使用的字符(包括检测它们)可能会过于耗费性能,因此我可能在实现即时纹理调整功能后发布1.0版本。虽然手动清除缓存也可能被添加,但这种做法的实际用途值得怀疑,因为您可以直接创建一个新的FontTexture来达到类似的效果。
屏幕截图
这个屏幕截图主要展示了fontdue(文本光栅化)和SDL2(窗口和渲染),但我认为渲染框应该有截图来给人留下第一印象。这个截图是来自testbed.rs示例的。
许可证
此库可以在MIT许可证的条款下使用。
依赖关系
~19MB
~394K SLoC