我有一张基于 OpenGL 构建的地图。这张地图包含街道、高速公路、边界。我想知道用户触摸的是什么对象,比如它是多边形还是折线还是简单的线。如何从 OpenGL 中检测这些对象?
问问题
478 次
1 回答
2
在 OpenGL ES 中,没有selection buffer
,因此没有专门设计用于允许您在特定点识别屏幕上的对象的功能。
你有两个选择:
将屏幕空间位置 (x,y) 取消投影到世界空间位置,并测试所有对象与穿过该点的射线相交(通常是性能最佳的方法)。
使用唯一标识它的特殊颜色渲染场景中的所有内容,然后读取屏幕空间位置 (x,y) 处的像素颜色。
选项 2 速度较慢,因为它需要您等待 GPU 完成渲染,但它的优点是可以更准确地处理非常细的对象(例如线条)。它的实现也简单得多。
有关选项 2的更多详细信息,请参阅以下两个链接:
于 2013-08-27T09:40:35.493 回答