为了使用 OpenGL 渲染文本,我采用纹理四边形方法,我为每个需要表示的字符绘制一个四边形。我将所有字符纹理信息存储在单个纹理中,并在纹理矩阵上使用 glScalef 和 glTranslatef 来选择纹理中的正确字符。起初我只在用于创建纹理的图像中放置了几个字符,并且效果很好。
从那以后我需要渲染更多的字符,比如小写字母。我尝试添加更多字符,但现在我的文本最终未对齐且更小。
有没有创建角色映射的正确方法,或者我的方法都错了?
注意:我使用的是单样式字体,所以字体尺寸不应该是问题,但是我想添加对具有非统一大小字符的字体的支持。
编辑:我使用顶点缓冲区进行绘图而不是立即模式。
编辑 2:包含字符映射的纹理有 9 行,每行有 11 个字符。由于字符大小相同,所以我在纹理矩阵上使用 glscalef 到纹理宽度的 1/9,高度的 1/11。VBO 定义四边形 (0,0),(1,0),(0,1),(1,1) 和 tex 坐标 (0,0),(1,0),(0,1),( 1,1)。不对齐似乎是由于我的转换不完全适合每个字形。如何计算每个字形的最佳边界?