0

我正在开发一个多代理应用程序。在模拟过程中,我会显示在任何时间步出现的代理。该代理有自己的特定 ID。

我想通过使用拾取来识别这些对象并与之交互。我的挑选方法有效,但我无法获得代理的 ID(我只获得与代理之一不相关的几何图形的 ID)。因此,我需要找到将代理的相应 ID 分配给任何新绘制的几何图形的方法。

当你绘制一个对象(可能在 glBegin() 和 glEnd() 之间)时,opengl 有没有办法分配一个 id ?

4

1 回答 1

1

过去,我曾成功地在后台缓冲区/FBO 中为每个对象绘制不同的颜色,进行选择,读取该点的像素,然后以适当的颜色渲染实际帧以供人类查看。使用着色器,您可以同时进行这两项操作。

然后您只需在表格中查找颜色即可确定对象是什么。这种方法非常缓慢。

更好(更快)的替代方法是从您单击的位置投射光线,以查看它与场景中的哪些对象相交。你也可以做一些原始的截锥体剔除来减少潜在的可拾取对象的集合。

于 2012-11-14T02:56:22.133 回答