我正在简单的平面上绘制纹理。渲染代码基本上是这样的:
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
};
其中width和height是positiv值。 _textureBuffer是
new float[] {
0, 0,
0, 1,
1, 1,
1, 1,
1, 0,
0, 0
}
通过这种方式,纹理可以转动并镜像或转动180度。我做错了什么?
答案 0 :(得分:4)
那是因为OpenGL纹理coords惯例是从正常约定“颠倒”,修复它,翻转你的t纹理坐标(0 - > 1,1 - > 0)。