5

我想要关于如何在 OpenGL 中快速渲染文本的建议。

目前,我正在阅读一种真正的字体并动态生成包含所有 ASCII 字符的纹理,对于使用的每种字体,对于使用的每种字体大小。每个纹理只生成一次并保留以供以后使用。

在绘图阶段,我逐行绘制所有内容。

我在内存上有一个静态数组,计算字距等,修改线条的顶点位置和纹理坐标。然后我绑定相应的纹理并渲染线条。

不幸的是,这似乎很慢。有没有更好的办法?

4

5 回答 5

10

IMO 最好的方法是使用距离场。将使用更少的空间,速度更快,轻松支持几种漂亮的文本效果,并且非常容易实现(特别是因为您似乎已经准备好字体 -> 纹理部分)。

于 2012-07-06T08:46:33.330 回答
7

将渲染文本绘制到纹理上,然后将该纹理绘制到屏幕上。存储帧之间的纹理。您需要对删除屏幕上不再可见的文本进行一些管理,但这应该更快。

图形库通常将其抽象为 String 类,一旦将其绘制到屏幕上,它就会记住它绘制的纹理,并在内部字符串更改时使其无效。

于 2012-07-06T08:44:40.510 回答
2

这是一个非常好的和快速的库,用于使用 freetype 和 OpenGL 渲染动态文本:freetype-gl

于 2012-07-06T08:55:03.150 回答
1

The FTGL library would probably provide everything you need.

于 2012-07-06T08:50:25.153 回答
0

您可以使用新的opengl文本渲染库freetype-direct-gl,它使用freetype字体轮廓直接渲染缩放后的字体,因此无需创建位图纹理或在CPU中进行复杂的计算。

于 2018-08-31T12:46:19.947 回答