2011-04-16 73 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