OpenGL Android:X轴神秘地翻转

时间:2012-03-21 16:29:07

标签: android opengl-es glulookat

我通过OpenGL在伪2D画布中显示四边形。 为此,我使用正交投影:

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(-ratio, ratio, -1, 1, 0, 10000);

显示的四边形的坐标为:

float[] quadCoords = {-10.0f, -10.0f, 5.0f, 
                       10.0f, -10.0f, 5.0f, 
                       10.0f,  10.0f, 5.0f, 
                      -10.0f,  10.0f, 5.0f};

这个四边形渲染为2个三角形(我省了代码)。我也在使用纹理,效果很好。 在渲染四边形之前定义“相机”,如下所示:

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, -10.0f, -10.0f, -5, -10.0f, -10.0f, 0f, 0f, 1.0f, 0.0f);

如您所见,视口居中于[-10,-10,0],它应位于四边形的左下角。但是,在渲染场景时,它看起来像这样:

OpenGL Screenshot

这似乎是右下角 - 但事实并非如此。我检查了一下,事实证明X轴被翻转了。我是否在使用gluLookAt做错了什么?或者我错过了什么?

1 个答案:

答案 0 :(得分:3)

好的,这有点傻,但我在写完这个问题后几分钟就找到了答案(发生几小时后):

“相机”正在观察四边形的背面。为四边形的所有z坐标指定“0”,为gluLookAt中的眼点的z坐标指定“+1”固定它。