在OpenGL中快速文本呈现

aCu*_*ria 2 c++ opengl glsl

我想知道如何在OpenGL中快速渲染文本.

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

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

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

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

Yli*_*sar 9

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

  • 此外,已经存在易于使用的工具[创建字体纹理和字距调整数据](http://www.angelcode.com/products/bmfont/),然后[生成一个距离字段](http:// bitsquid) .blogspot.it/2010/04 /距离场基渲染-of.html). (3认同)

Ham*_*son 5

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

图形库通常将其抽象为String类,一旦将其绘制到屏幕上,就会记住它绘制的纹理,如果内部字符串发生更改,则会使其无效.