OpenGL检测用户触摸的对象

时间:2013-08-27 09:07:45

标签: opengl-es opengl-es-2.0

我有一张基于OpenGL的地图。此地图包含街道,高速公路,边界。我想要的是知道用户触摸的对象,例如多边形或折线或简单线。如何从OpenGL中检测这些对象?

1 个答案:

答案 0 :(得分:2)

在OpenGL ES中,没有selection buffer,因此没有专门设计的功能允许您在特定点上识别屏幕上的对象。

您有两种选择:

  1. 取消将屏幕空间位置(x,y)投影到世界空间位置,并测试所有对象与通过此点拍摄的光线相交(通常是性能最佳的方法)。 / p>

  2. 使用唯一标识它的特殊颜色渲染场景中的所有内容,然后在屏幕空间位置(x,y)读取像素的颜色。

  3. 选项2较慢,因为它需要您等待GPU完成渲染,但它具有更准确地处理非常薄的对象(如线条)的优势。实施起来也简单得多。

    有关选项2 的更多详细信息,请参阅以下两个链接: