2014-06-17 175 views
0

我需要使用OpenGL ES 2.0的突出点

GLU.gluProject();

。函数需要视口(int [])参数。我假定INT数组包含X,Y,宽度,高度,这是由设置:

GLES20.glViewport(0,0,宽度,高度);

我是否正确?

OpenGL的起源点还在左下角吗?所以当你检测到在Android设备上触摸ex。在x = 255,y = 255你必须重新计算它? (我的计算射线的开始和结束点;))

+0

起源取决于许多许多事情。对于2D格式的最简单情况,您通常使用glOrtho,它包含顶部,底部,左侧和右侧参数,可以设置左上角是原点(0,0)。默认(没有设置任何东西)我相信原点位于中心,左边是-1,右边是1,顶部是1,底部是-1。 –

回答

0

是的,GLU.gluProject()的第八参数,这是在documentation命名view,是含有X,Y,宽度,高度的视口的数组:

查看|当前视图{x,y,宽度,高度}

OpenGL中窗口坐标的原点位于窗口的左下角。

对于用于绘制的坐标,您可以应用自己的转换,因此您可以选择要使用的坐标系。您的顶点着色器需要应用转换来将您的输入坐标转换为标准化的设备坐标(NDC),其范围为从左到右和从下到上的范围[-1.0,1.0]。

+0

因此,我们假设触摸输入(x = 200,y = 350),其中屏幕宽度为400,高度为700,您必须重新计算到[-1,1]范围才能使它们成为正确的形式?更具体地说,我在vec3(0,0,-3)上看到了相机,没有其他世界变换看到vec3(0,0,0),并且正投影(左-1,右1,下-1,顶1) – user2977027