OpenGL ES, почему моя текстура повернулась на 180 градусов? - PullRequest
2 голосов
/ 16 апреля 2011

Я рисую текстуру на простой плоскости. Код рендеринга в основном такой:

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, _vertexBuffer);

gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, _textureBuffer);

gl.glDrawArrays(GL10.GL_TRIANGLES, 0, _vertexBuffer.capacity()/3);

С _vertextBuffer как

new float[] {
    0, 0, 0,
    0, height, 0,
    width, height, 0,
    width, height, 0,
    width, 0, 0,
    0, 0, 0
};

где ширина и высота являются положительными значениями. _textureBuffer is

new float[] {
    0, 0,
    0, 1,
    1, 1,
    1, 1,
    1, 0, 
    0, 0
}

При этом текстура поворачивается и отражается или поворачивается на 180 градусов. что я делаю не так?

1 Ответ

3 голосов
/ 16 апреля 2011

Это потому, что соглашение о текстурных координатах OpenGL "перевернуто" по сравнению с обычными соглашениями, чтобы исправить это, переверните ваши t текстурные координаты (0 -> 1, 1 -> 0).

...