#opengl-es #texture-mapping
#opengl-es #отображение текстур
Вопрос:
я рисую текстуру на простой плоскости. Код визуализации в основном такой:
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 — это
new float[] {
0, 0,
0, 1,
1, 1,
1, 1,
1, 0,
0, 0
}
При этом текстура поворачивается и зеркально отражается или разворачивается на 180 градусов. что я делаю не так?
Ответ №1:
Это потому, что соглашение о текстурных координатах OpenGL «перевернуто» по сравнению с обычными соглашениями, чтобы исправить это, переверните свои t-текстурные координаты (0 -> 1, 1 -> 0).
Комментарии:
1. Спасибо за подсказку. Я исправляю это с помощью: new float[] { 0, 0, 0, -1, 1, -1, 1, -1, 1, 0, 0, 0 }