我正在开发一个多代理应用程序。在模拟过程中,我会在任何时间步长显示存在的代理。此代理有自己的特定ID。
我希望通过使用pick来识别这些对象并与之交互。我的拣选方法正在运行,但我无法获得代理的ID(我只获得与代理之一无关的几何的id)。所以我需要找到为任何新绘制的几何分配代理的相应id的方法。
在绘制对象时(或许在glBegin()和glEnd()之间),opengl中是否有一种方法可以指定一个id?
答案 0 :(得分:1)
过去我成功地在后备缓冲器/ FBO中为每个物体绘制不同的颜色,进行拾取,在该点读取像素,然后以适当的颜色渲染实际帧以供人类看到它。使用着色器,您可以同时执行这两项操作。
然后你只需在表格中查找颜色即可找出对象是什么。这种方法很慢。
更好(更快)的替代方法是从您单击的位置投射光线,以查看与其相交的场景中的哪些对象。您可以进行一些原始的截头剔除,以减少潜在的可拾取对象集。