rap*_*tor 11 c++ opengl performance fonts
背景
我在游戏Bitfighter上工作.我们仍然与OpenGL 1.1兼容并为OSX,Windows和Linux编译.
我们使用矢量图形来处理所有事情,包括文本渲染和操作.我们使用GLUT中稍微修改过的'FontStrokeRoman'变体,它只是一堆静态线.我们喜欢这个,因为它似乎表现得非常好,易于旋转/缩放/操纵.我们还允许进行游戏内聊天,以便即时绘制文本.
问题
我们想要使用更多/不同的字体.
我们已经找到了我们喜欢的其他几种字体,但它们都是TTF类型的字体,它们构建为多边形(带曲线等)而不是笔画或刺.这带来了一些问题:
我们已经尝试将TTF字体转换为多边形点阵列,然后对填充进行三角测量.然而,这很难很好地渲染 - 在这种情况下,像素提示/抗锯齿似乎很难做到.
我们甚至尝试使用像'campskeleton'这样的库对多边形字体进行镂空,因此我们可以输出矢量笔划字体(看起来不太成功).
我们应该做什么?
我知道这个问题有点笼统.我们希望保持性能和文本操作能力,但能够使用更好的字体.我对任何方向的任何建议持开放态度.
一些解决方案可能是以下答案:
经过一些令人信服的(感谢 Serge)并尝试了这里的一些建议(包括使用 freetype 的 FTGL),我们决定:
这对于我们的游戏来说似乎是完美的。渲染性能与我们使用的基于矢量的笔划字体相当 - 一旦生成,纹理四边形实际上并没有那么慢,并且 Font-Stash 的缓存有很大帮助。此外,stb_truetype 的使用使我们无需在所有平台的游戏中需要其他依赖项。
就其价值而言,该解决方案比使用 FTGL 处理 true-type 字体大约快一个数量级,可能是因为缓存的缘故。
感谢您的建议和指点。
更新
上面的 Font-Stash 链接是原始链接的一个分支。原版已经更新,添加了一些分叉的功能,并且可以允许不同的渲染后端。