0

我正在 OpenGLES 2.0 中制作 ipad 应用程序,并且我有一些对象应该能够通过触摸事件进行翻译。所以我需要与屏幕(X,Y,Z)坐标对应的(x,y,z)对象坐标。我能够在线获得此教程:

http://softwareprodigy.blogspot.com/2009/08/gluunproject-for-iphone-opengl-es.html

但问题是当我在 OpenGL ES 2.0 上工作时,我有自己的投影、模型和相机矩阵,我将它们传递给顶点着色器。首先我需要视口矩阵(我提到了使用 glViewPort() 内置函数的视口),我怎样才能得到它?

其次,我无法获得所描述的将射线与平面相交的过程?有人可以解释一下或提供另一种方法吗?


好的,我从上面弄清楚了所有内容及其工作,现在我有一个新问题:P

我能够获得 (x,y) 对象坐标,并且也可以根据光线的交点获得 z 坐标。但是,当我平移或旋转对象时,我的模型矩阵会发生变化,这会导致对象坐标发生变化,但我只知道用于绘制对象的初始坐标(因此我无法确定被射线击中的对象是否是正确的)。

有什么办法可以跟踪我的对象坐标???一种方法是将相同的变换应用于对象的中心点并保持其值,但这仅适用于球形(对称对象)。有任何想法吗???

4

1 回答 1

1

OpenGL 中没有视口矩阵,只有视口参数,与您传递给 glViewport 的参数相同。您可以使用带有 GL_VIEWPORT 作为 pname 的 glGetIntegerv 获取它们:

GL_VIEWPORT 参数返回四个值:视口的 x 和 y 窗口坐标,然后是其宽度和高度。最初,x 和 y 窗口坐标都设置为 0,宽度和高度设置为 GL 将在其中进行渲染的窗口的宽度和高度。请参阅 glViewport。

glGet OpenGL ES 2.0 手册页

于 2011-06-29T20:23:06.970 回答