【问题标题】:Converting screen coordinates to object coordinates OpenGL ES 2.0 on Ipad在 Ipad 上将屏幕坐标转换为对象坐标 OpenGL ES 2.0
【发布时间】:2011-06-29 20:06:10
【问题描述】:

我正在 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 坐标。 但是,当我平移或旋转对象时,我的模型矩阵会发生变化,这会导致对象坐标发生变化,但我只知道用于绘制对象的初始坐标(因此我无法确定被射线击中的对象是否是正确)。

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

【问题讨论】:

  • 我搞定了,我现在真的明白了。我正在反转投影和模型矩阵,所以我不需要关心任何转换。我想这个问题现在可以删除
  • 你能给我解释一下吗?如何将屏幕坐标转换为 opengl?

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


【解决方案1】:

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

GL_VIEWPORT params 返回四个值: 这 X 和 是的 视口的窗口坐标, 其次是它的宽度和高度。 最初 X 和 是的 窗口坐标都设置为 0, 并且width和height被设置为window的宽高到 GL 将进行渲染。 请参阅 glViewport。

来自glGet OpenGL ES 2.0 man page

【讨论】:

  • 是的,谢谢,我能在几分钟内恢复,问题仍然存在于其余部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多