我正在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坐标。 然而,当我翻译或旋转我的对象时,我的模型矩阵会发生变化,这会导致对象坐标的变化,但我知道我用来绘制对象的初始坐标(所以我无法确定光线所击中的对象是否是正确的)。
有什么方法可以跟踪我的对象坐标??? 一种方法是将相同的变换应用于对象的中心点并保持其值,但这仅适用于球形(对称对象)。任何想法???
答案 0 :(得分:1)
OpenGL中没有视口矩阵,只有视口参数,与传递给glViewport的视口参数相同。你可以使用glGetIntegerv和GL_VIEWPORT作为pname:
来获取它们GL_VIEWPORT params返回四个值: 该 X 和 ÿ 视口的窗口坐标, 其后是宽度和高度。 最初的 X 和 ÿ 窗口坐标都设置为0, 并且宽度和高度设置为窗口的宽度和高度 GL将进行渲染。 请参阅glViewport。