【发布时间】:2016-04-30 04:41:23
【问题描述】:
所以我正在尝试用 C++ 创建一个简单的游戏引擎。我需要渲染一些文本,所以我使用本教程 (http://learnopengl.com/#!In-Practice/Text-Rendering) 作为指导。它使用库 freetype 2。
一切都很好,文本正在渲染。但是现在当我充实 ui 并创建标签时,我希望能够更改文本的大小。我可以通过缩放文本来做到这一点,但我希望能够通过使用像素来做到这一点。
在这里您可以看到缩放的效果:
GLfloat xpos = x + ch.Bearing.x * scale;
GLfloat ypos = y + linegap + (font.Characters['H'].Bearing.y - ch.Bearing.y) * scale;
GLfloat w = ch.Size.x * scale;
GLfloat h = ch.Size.y * scale;
所以在我的方法 renderText 中,我只传递了一个缩放变量,它会缩放文本。但我更喜欢使用像素,因为它对用户更友好,有什么方法可以在 freetype 2 中做到这一点,还是我坚持使用比例变量?
【问题讨论】:
-
这里不清楚你的意思。听起来您想重新生成字形,以更高的分辨率重新光栅化它们。好吧,你必须真正这样做。这意味着,当大小发生变化时,您必须再次完成获取字形数据的任何过程。
-
我觉得自己没有考虑到这一点很愚蠢,但感谢 Cornstalks,效果很好。当大小设置为低于它生成的大小时,文本看起来不太好,但我认为那是因为我选择的字体。再次感谢 Cornstalks!
-
@assasinDN:很好,很高兴它有帮助!我已将我的评论移至答案中,以便您可以将问题标记为已回答。
标签: c++ text text-rendering freetype2