调整大小后的丑陋字体,OpenGL

时间:2013-01-01 14:04:53

标签: c++ opengl fonts ftgl

我将从图像开始:

enter image description here

上图显示了以两种不同方式实现的文本,两种方式都使用相同类型的字体 - Arial,粗体,大小为11.

底部的一个是在图像编辑程序中创建的,而一个在我的OpenGL应用程序的顶部。更准确地说,使用FTGL库中的FTExtrudeFont

font_ptr font(new FTExtrudeFont(filename.c_str()));

我的问题是,为什么这样画?我假设这可能是不同的调整大小算法的原因,但如果是这样,我怎样才能在我的OpenGL应用程序中实现这种更好看的字体(底部字体)?

编辑:

要渲染字体,我只调用这个函数:

font->Render(text,         // Text to be displayed
             -1,           // Line length, which by default is left as -1
             pos);         // Position in which to draw text

1 个答案:

答案 0 :(得分:3)

这看起来像是由OpenGL中的纹理采样引起的。当你正在绘制的纹理(在这种情况下是一种字体)与你绘制它的四边形大小不同时会发生这种情况。

简易解决方案:确保纹理大小与屏幕上绘制的区域相匹配。不要将14px字体渲染到12px区域,而是使用12px字体或14px区域。

在你的问题中,你提到你的字体是'11号'。我不知道FTGL库的细节,但我认为有一个调用可以告诉你可以绘制的特定字符串的最佳尺寸。不要使用自己的数学计算这些,使用库。只要你的尺寸正确,你就不应该遇到问题。