glScalef 用于光栅字体,OpenGL

Posted

技术标签:

【中文标题】glScalef 用于光栅字体,OpenGL【英文标题】:glScalef for raster fonts, OpenGL 【发布时间】:2013-01-01 12:12:31 【问题描述】:

我有一个简单的问题。我正在使用 FTGL 库在我的游戏应用程序中绘制我的 PixmapFont。我的问题是 - 是否可以使用 glScalef() 来缩放光栅字体?据我了解,如果我必须使用glRasterPos() 而不是glTranslatef() 它也可能考虑glScalef() 功能?但如果是这样,是否有任何方法可以缩放这种字体?

这是我需要缩放的:

我可以改变它的大小,只需输入:

font->FaceSize(12);

但是对于这么小的字体,它给了我模糊的效果。从我在某处读到的内容来看,最好渲染更大尺寸的字体 - 例如72 - 然后按比例缩小,因为它可以提供更好的结果。

【问题讨论】:

【参考方案1】:

OpenGL 位图绘制函数 (glBitmap) 不受转换管道的影响,因为它们直接进入帧缓冲区。然而,位图绘制功能过去总是很慢,支持很差,并且已从更高版本的 OpenGL 中完全删除。

【讨论】:

像往常一样 - 非常有帮助。谢谢,datenwolf。【参考方案2】:

您需要使用texture fonts,而不是像素图(光栅)字体。这会将字体绘制为映射到三角形基元的纹理,这比直接绘制到帧缓冲区更加灵活和广泛支持。另请参阅FTTextureFont documentation。

因为它只是渲染 OpenGL 基元,所以这种方法会考虑您使用 glTranslatefglScalef 等设置的所有常用转换。为了获得最清晰的结果,请使用glOrtho 设置像素完美的投影矩阵。

【讨论】:

谢谢你,托马斯。我想知道像素图字体是否是一个不错的选择。现在我知道不是。

以上是关于glScalef 用于光栅字体,OpenGL的主要内容,如果未能解决你的问题,请参考以下文章

tcpdf 字体连字(英文)?

光学基于matlab GUI光栅条纹投影生成含Matlab源码 2118期

光学基于matlab GUI光栅条纹投影生成含Matlab源码 2118期

glPointSizePointerOES 和 glScalef

光栅化插值方法

光栅化 Alpha8 格式的 QML SVG 图像