OpenGL ES为什么我的纹理转了180度?

时间:2011-04-16 11:14:37

标签: opengl-es texture-mapping

我正在简单的平面上绘制纹理。渲染代码基本上是这样的:

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度。我做错了什么?

1 个答案:

答案 0 :(得分:4)

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