Android OpenGL-ES 视图问题。在OpenGL中,相机和视图的默认位置是在0,0处。如何设置视图和相机,使其基本上与计算机屏幕坐标相同,其中0,0在顶部。我已经调用了gl.glOrthof(-screenWidth/2, ScreenWidth/2, -ScreenHeight/2, ScreenHeight/2)。但我认为这是错误的。我还需要设置相机以查看整个场景。我不确定如何使用gl.glFrustumf来完成此任务。
Android OpenGL-ES 视图问题。在OpenGL中,相机和视图的默认位置是在0,0处。如何设置视图和相机,使其基本上与计算机屏幕坐标相同,其中0,0在顶部。我已经调用了gl.glOrthof(-screenWidth/2, ScreenWidth/2, -ScreenHeight/2, ScreenHeight/2)。但我认为这是错误的。我还需要设置相机以查看整个场景。我不确定如何使用gl.glFrustumf来完成此任务。
要将顶点坐标用作屏幕坐标,只需在投影矩阵上使用glOrtho(0, width, height, 0, -1, 1)
,并保持您的模型视图矩阵为单位矩阵(这是默认值)。请注意,我将底部和顶部翻转了一下,因为在GL中,(0,0)位于左下角,而您希望它位于顶部(但请记住,这也会翻转每个对象及其三角形的顺序)。您还忘了设置近平面和远平面(z轴超出此区间的所有内容都不会显示)。但是,当您现在绘制所有具有z=0的对象(绘制仅包含2d顶点时为默认值)时,一切应该都很好。
glFrustum
仅是glOrtho
的替代方法。其中glOrtho
构造正交(平行)视图,而glFrustum
构造透视视图。因此,您不需要glFrustum
。
glOrtho
调用之后的那句话: “请注意,我翻转了底部和顶部,就像在 GL 中一样(0,0)在左下角,而你希望它在顶部”。 - Christian Rau