如何在OpenGL中翻转图像?

时间:2011-09-18 21:31:03

标签: android opengl-es

我不想问这么愚蠢的问题,但我无法确定如何使用Android OpenGL翻转图像。

我尝试使用gl.glScalef(-1,y,z) android gl.glRotatef(180,0,1,0)但是当我这样做时图像翻转但它也改变了我不想要的位置。我确信有一个简单的方法可以做到这一点,我只是没有得到。

这是我的抽奖代码:

public void draw(GL10 gl){
    gl.glLoadIdentity();
    gl.glTranslatef(position.x, position.y, 0);
    gl.glRotatef(angle, rotX, rotY, rotZ);
    gl.glScalef(scaleX, scaleY, scaleZ);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId[0]);

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glEnable(GL10.GL_BLEND);

    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertexsBuffer);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

    gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer);

    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glDisable(GL10.GL_BLEND);

    if(animation == true){
        PlayAnimations();
    }
}

2 个答案:

答案 0 :(得分:2)

  1. 居中对象(记住翻译)
  2. 通过相对于所需轴缩放到-1来执行翻转。
  3. 然后“反向翻译”该对象。
  4. 如需了解更多信息,请自行获取James D. Foley的计算机图形学副本。 http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406

答案 1 :(得分:1)

您可以使用一组不同的纹理坐标或使用纹理矩阵。