2

単純な平面にテクスチャを描画しています。レンダリングコードは基本的に次のとおりです。

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度回転します。私は何が間違っているのですか?

4

1 に答える 1

3

これは、OpenGLテクスチャ座標の規則が通常の規則とは「逆さま」であるためです。これを修正するには、tテクスチャ座標を反転します(0-> 1、1-> 0)。

于 2011-04-16T14:09:11.393 に答える