我映射紋理座標等:紋理座標上的不同尺寸的矩形
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