在Ipad上将屏幕坐标转换为对象坐标OpenGL ES 2.0

时间:2011-06-29 20:06:10

标签: ipad opengl-es-2.0 coordinate-systems

我正在OpenGLES 2.0中创建一个ipad应用程序,我有一些我应该能够通过触摸事件进行翻译的对象。所以我需要对应于屏幕(X,Y,Z)坐标的(x,y,z)对象坐标。我能够在网上得到这个tutotial:

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

但问题是我正在研究OpenGL ES 2.0,我有自己的投影,模型和相机矩阵,我将其传递给顶点着色器。 首先我需要Viewport矩阵(我在功能中使用glViewPort()提到了视口),我该怎么做?

其次,我无法将描述的过程与光线与飞机相交? 有人可以解释它或提供另一种方法吗?


oK我发现了上面的所有内容及其工作原理,现在我遇到了一个新问题:P

我能够得到(x,y)物体坐标,并且也可以根据光线的交点得到z坐标。 然而,当我翻译或旋转我的对象时,我的模型矩阵会发生变化,这会导致对象坐标的变化,但我知道我用来绘制对象的初始坐标(所以我无法确定光线所击中的对象是否是正确的)。

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

1 个答案:

答案 0 :(得分:1)

OpenGL中没有视口矩阵,只有视口参数,与传递给glViewport的视口参数相同。你可以使用glGetIntegerv和GL_VIEWPORT作为pname:

来获取它们
  

GL_VIEWPORT                           params返回四个值:                           该                           X                           和                           ÿ                           视口的窗口坐标,                           其后是宽度和高度。                           最初的                           X                           和                           ÿ                           窗口坐标都设置为0,                           并且宽度和高度设置为窗口的宽度和高度                           GL将进行渲染。                           请参阅glViewport。

来自glGet OpenGL ES 2.0 man page