我正在尝试使用纹理四边形在我的OpenGL程序中绘制文本。我的纹理尺寸为256x32,每个字符大约为6像素。 (每行'我有42个字符,5行。)
当我们为左上角字符生成UV坐标时,我这样做:
float textureDelta = 1.0f / 42.0f //0.0238
float u = 0;
float v = 0;
glBegin(GL_QUADS);
glTexCoord2f(u,1-v); glVertex2f(0,0);
glTexCoord2f(u+textureDelta, 1-v); glVertex2f(16,0);
glTexCoord2f(u+textureDela, 1-v + textureDelta); glVertex2f(16,16);
glTexCoord2f(u, 1-v+textureDelta); glVertex2f(0,16);
glEnd();
我得到的问题是我的V坐标看起来非常错误,并且v坐标似乎总是在底部,我该如何解决这个问题?
另外,我如何处理空格?
答案 0 :(得分:0)
u
坐标看起来没问题。但由于v
方向只有5行,因此根据行数计算的坐标需要不同的增量:
float uDelta = 1.0f / 42.0f;
float vDelta = 1.0f / 5.0f;
glTexCoord2f(u, 1.0f - v); ...
glTexCoord2f(u + uDelta, 1.0f - v); ...
glTexCoord2f(u + uDelta, 1.0f - v + vDelta); ...
glTexCoord2f(u, 1.0f - v + vDelta); ...