网络上的Opengl+Freetype渲染文字的教程普遍上在RenderText函数里使用scale参数改变矩形顶点来控制文字的大小,笔者在试过之后发现可用性十分有限,scale为整数的时候可用,一旦为浮点数,经过缩放后的文字会变得模糊不清,实在没有这样做的必要。
我们可以使用FreeType内置的api:FT_Set_Pixel_Sizes(FT_Face face,FT_Uint width,FT_Uint height),该api用于控制读取字体纹理大小。
如果你想得到12像素大小的字体这样设置即可:
FT_Set_Pixel_Sizes(face, 12, 12);
这样设置后读出来的纹理就是12像素大小,我们完全不需要用额外的scale参数去改变字符矩形的大小。
但是FT_Set_Pixel_Sizes设置的像素大小为奇数时也容易发生模糊情况,例如设置为13就会模糊,我们只需要将字符的Y位置这样变换:
if (size % 2 == 1)//字体大小size是否为奇数
{
y = (float)((int)y+0.5);//将y变为y.5
}
else
{
y = round(y);//偶数则将y取整
}
当字体大小为