2011-04-16 62 views
3

我正在一个简单的平面上绘制纹理。所述renderingcode基本上是这样的:OpenGL ES为什么我的纹理变成了180度?

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 
}; 

其中宽度和高度positiv值。 _textureBuffer是

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

有了这个纹理被翻转和镜像或转过180度。我究竟做错了什么?

回答

4

这是因为OpenGL纹理坐标约定与正常惯例是“颠倒”的,为了修复它,翻转你的纹理坐标(0 - > 1,1 - > 0)。

+0

感谢您的提示。我修复:新的浮动[] { \t \t \t \t 0,0, \t \t \t \t 0,-1, \t \t \t \t 1,-1, \t \t \t \t 1,-1, \t \t \t \t 1,0, \t \t \t \t 0,0 \t \t} – SACO 2011-04-16 16:54:27