2

我有一张基于 OpenGL 构建的地图。这张地图包含街道、高速公路、边界。我想知道用户触摸的是什么对象,比如它是多边形还是折线还是简单的线。如何从 OpenGL 中检测这些对象?

4

1 回答 1

2

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

你有两个选择:

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

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

选项 2 速度较慢,因为它需要您等待 GPU 完成渲染,但它的优点是可以更准确地处理非常细的对象(例如线条)。它的实现也简单得多。

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

于 2013-08-27T09:40:35.493 回答