通过纹理四边形的OpenGL字体

时间:2015-08-13 02:42:50

标签: c++ opengl fonts opengl-es

我正在编写一个小型OpenGL应用程序,我正试图找出实现文本的最佳方法,特别是数字。我只是想显示一个四位数的数字,并且我已经预先分配了每个数字应该去的矩形(几乎就像七段显示)。我只需要知道将数字“加”到矩形中的最佳方法。将每个数字存储到纹理图集中然后将纹理绘制为四边形是最简单的吗?它会扩展到数千位吗?我怎么能做到这样的呢?

1 个答案:

答案 0 :(得分:2)

" best" (我更愿意说"通常" ...)实现文本的方法是使用Freetype,如果你想在你的应用程序中使用任何类型的langage / font并想要完美的抗锯齿。

基本上你使用freetype来渲染字符(渲染是通过CPU而不是GPU完成)到纹理"字体缓存"然后通过对此字体缓存进行采样,每个字符绘制一个四边形这实际上相当复杂,因为有很多事情需要处理(当缓存已满时会发生什么,你需要缓存不同大小的字符或接受一些扩展,如何处理更新纹理缓存可以停止的事实GPU,如何动态或静态批处理,每个字符没有1个绘图调用,还有很多其他的东西......)。

由于您正在进行一个简单的项目并且主要想要显示数字,我建议您将包含预渲染字符的位图加载到纹理,然后为每个字符绘制四边形,对纹理进行采样。您可以找到一个教程here,在其中使用如下纹理:

enter image description here

相关问题