2011-05-23 162 views
5

Android opengl-es查看问题。所以在openGL中,摄像头和视图的默认位置是0,0。如何设置视图和摄像头,使其与顶部0,0处的计算机屏幕坐标基本相同。我称之为gl.glOrthof(-screenWidth/2,ScreenWidth/2,-ScreenHeight/2,ScreenHeight/2)。但我认为这是错误的。我还需要设置相机以查看整个字段。我不确定如何使用gl.glFrustumf来完成此任务。OpenGL坐标匹配屏幕坐标?

回答

11

要使用顶点坐标作为屏幕坐标,只需在投影矩阵上使用glOrtho(0, width, height, 0, -1, 1)并保持您的模型视图矩阵标识(这是默认值)。请注意,我翻转了底部和顶部,因为在GL(0,0)位于左下角,并且您希望它位于顶部(但请记住,这也会翻转每个对象,因此也会翻转三角形的顺序)。你也忘了设置近距离和远距离飞机(所有带有z间隔的区域都不会显示)。但是,当你现在绘制所有的对象z = 0(这是默认的,只绘制2d顶点时),一切都应该没问题。

glFrustum只是glOrtho的替代选择。其中glOrtho构造正交(平行)视图,glFrustum构造透视图。所以你不需要glFrustum

+0

不应该是glOrtho(0,宽度,0,高度,-1,1)? – darethas 2013-11-21 04:44:11

+0

@ treehau5如果你阅读完整个答案,特别是在'glOrtho'调用之后的句子:*“请注意,我翻转了底部和顶部,如GL(0,0)在左下角,你希望它在顶端”*。 – 2013-11-21 09:30:06

+0

对。现在主要关心的是,你为什么要那样做? – darethas 2013-11-22 02:46:55