我将从图像开始:

上图显示了以两种不同方式实现的文本,两种方式均使用相同类型的字体-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

最佳答案

这看起来像是由OpenGL中的纹理采样引起的。当您要绘制的纹理(在这种情况下为字体)与您在其上绘制的四边形的大小不同时,就会发生这种情况。

简单的解决方案:确保纹理大小与屏幕上绘制的区域匹配。不要将14px字体呈现为12px区域,而应使用12px字体或14px区域。

在您的问题中,您提到您的字体是'size 11'。我不知道FTGL库的详细信息,但我假设有一个电话可以告诉您可以绘制的特定字符串的最佳尺寸。不要使用您自己的数学来计算这些,而要使用库。只要尺寸合适,就不会出现您遇到的问题。

10-08 07:57
查看更多