我有一张基于OpenGL的地图。此地图包含街道,高速公路,边界。我想要的是知道用户触摸的对象,例如多边形或折线或简单线。如何从OpenGL中检测这些对象?
答案 0 :(得分:2)
在OpenGL ES中,没有selection buffer
,因此没有专门设计的功能允许您在特定点上识别屏幕上的对象。
您有两种选择:
取消将屏幕空间位置(x,y)投影到世界空间位置,并测试所有对象与通过此点拍摄的光线相交(通常是性能最佳的方法)。 / p>
使用唯一标识它的特殊颜色渲染场景中的所有内容,然后在屏幕空间位置(x,y)读取像素的颜色。
选项2较慢,因为它需要您等待GPU完成渲染,但它具有更准确地处理非常薄的对象(如线条)的优势。实施起来也简单得多。
有关选项2 的更多详细信息,请参阅以下两个链接: