在opengl中的对象中指定给定id

在opengl中的对象中指定给定id,opengl,picking,Opengl,Picking,我正在开发一个多代理应用程序。在模拟过程中,我显示在任何时间步存在的代理。此代理有自己的特定id 我想通过使用拾取来识别这些对象并与之交互。我的拾取方法正在工作,但我无法获取代理的id(我只获取未与代理的id关联的几何体的id)。因此,我需要找到一种方法,将代理的相应id分配给任何新绘制的几何体 在opengl中,有没有一种方法可以在绘制对象(可能在glBegin()和glEnd()之间)时指定id?过去,我成功地在backbuffer/FBO中为每个对象绘制了不同的颜色,进行拾取,读取该点的像

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

我想通过使用拾取来识别这些对象并与之交互。我的拾取方法正在工作,但我无法获取代理的id(我只获取未与代理的id关联的几何体的id)。因此,我需要找到一种方法,将代理的相应id分配给任何新绘制的几何体


在opengl中,有没有一种方法可以在绘制对象(可能在glBegin()和glEnd()之间)时指定id?

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

然后你只需在表格中查找颜色,就可以知道物体是什么。这个方法很慢


更好(更快)的替代方法是从单击的位置投射光线,以查看它与场景中的哪些对象相交。您可以进行一些基本的平截体剔除,以减少潜在的可拾取对象集。

谢谢您的回答,我对拾取对象没有问题。例如,我可以拾取并以红色显示它,但我要做的是从拾取的几何体中获取代理的id。实际上,我拥有的是一个在OpenGL中默认创建的任意id(不是我的代理的id),但我不知道这个id是在哪里创建的,也不知道是否可以定义我自己的id(代理的id)。