背景
我在游戏Bitfighter工作。我们仍然与 OpenGL 1.1 兼容,并针对 OSX、Windows 和 Linux 进行编译。
我们对一切都使用矢量图形,包括文本渲染和操作。我们使用 GLUT 的“FontStrokeRoman”稍作修改的变体,它只是一堆静态线条。我们喜欢这个,因为它似乎表现得非常好,易于旋转/缩放/操作。我们还允许在游戏中聊天,以便即时绘制文本。
问题
我们想使用更多/不同的字体。
我们发现了其他几种我们喜欢的字体,但它们都是 TTF 类型的字体,它们构建为多边形(带有曲线等),而不是笔触或脊椎。这带来了几个问题:
- 我们必须使用纹理(到目前为止我们在游戏中一直避免使用)
- 它们不容易调整大小/可旋转/等。
- 性能显着降低(理论上?)
我们已经尝试将 TTF 字体转换为多边形点数组,然后对填充进行三角测量。然而,这很难很好地渲染——在这种情况下,像素提示/抗锯齿似乎很难做到。
我们甚至尝试使用诸如“campskeleton”之类的库对多边形字体进行骨架化,因此我们可以输出矢量笔划字体(看起来不太成功)。
我们应该做什么?
我知道这个问题有点笼统。我们希望保持性能和文本操作能力,但能够使用更好的字体。我愿意接受任何方向的任何建议。
一些解决方案可能是以下问题的答案:
- 我们如何正确地消除基于多边形的文本的锯齿并且仍然保持性能?
- 纹理的性能真的比静态点数组差吗?也许我有一个错误的假设
- 纹理字体可以快速调整大小/旋转吗?
- 完全不同的东西?