如何在不使用glUnProject或GL_SELECT的情况下在iPhone上选择OpenGL中的对象?

时间:2011-06-23 14:09:02

标签: iphone select opengl-es 3d

我有3个OpenGL对象同时显示。如果用户触摸其中任何一个,那么单独的特定OpenGL对象应该显示在屏幕上。

2 个答案:

答案 0 :(得分:4)

只需使用gluUnProject将触摸点转换为近剪裁平面上的点和远剪裁平面上的点。在光线 - 三角形交叉算法中使用这两个点之间的光线。找出哪个三角形最接近,以及三角形属于哪个对象就是你的对象。另一种方法是为每个对象提供唯一的ID颜色。然后,每当用户触摸屏幕时,使用您没有光照的唯一ID颜色进行渲染,但不显示渲染缓冲区。现在,您只需检查用户触摸的像素的颜色,并将其与对象颜色ID列表进行比较。快速简便,最多可支持16,581,375个独特对象。

答案 1 :(得分:1)

您必须解析场景中的每个对象,并通过gluUnProject检查每个对象与您计算的光线可能发生的碰撞。

根据您是否要选择面或对象,您可以测试光线与对象的边界体(例如边界框)的碰撞,以提高效率。