我映射纹理坐标等:纹理坐标上的不同尺寸的矩形
static float texCoord[] = {
0, 1,
1, 1,
1, 0,
0, 0
};
并且通过绘制它:
void Rectangle::Draw()
{
const float vertices[] = {
x, y,
x + width, y,
x, y - height,
x + width, y - height
};
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glColor3ub(255, 255, 255);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 2, texCoord);
if (IsTypeHorizontal()) glBindTexture(GL_TEXTURE_2D, texture_H);
else /* (IsTypeVertical())*/ glBindTexture(GL_TEXTURE_2D, texture_V);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
纹理在垂直(高度>宽度)绘制是好的,但在水平方向(高度<宽度),纹理看起来是倒置的。即使我用texCoord_H
和texCoord_V
分隔纹理坐标,绘制的图像仍然是反转的?
我还需要知道什么?我的代码在这里有什么问题?
PS。我用土上传的纹理在OpenGL
我画使用'GL_TRIANGLE_STRIP'不'GL_QUADS' – mr5 2013-04-27 14:01:28
OK了四,我只注意到texcoords和职位并不匹配,在这种情况下交换最后两个coords。 – 2013-04-27 14:05:43
什么是coords'?我认为那不是那里的问题。 'texcoords'和'vertices'使用相同的顶点绘图(例如'Z') – mr5 2013-04-27 14:17:40