Opengl 如何实现glPushName和glPopName的功能

Opengl 如何实现glPushName和glPopName的功能,opengl,opengl-3,Opengl,Opengl 3,如何在openGL 3.x中实现glPopName和glPopName的功能?openGL-3不再具有选择模式。事实上,没有任何OpenGL实现能够实现硬件加速的选择模式。人们总是进入软件仿真模式 相反,您可以实现其中一个: 用不同的颜色渲染每个对象,用作索引。然后读回感兴趣的区域,然后像往常一样重新渲染场景。这与选择模式非常接近 读回感兴趣区域中的深度缓冲区值,投影回世界位置,并根据场景数据确定哪个对象位于选定位置 或者完全没有OpenGL: 实现光线场景相交测试。使用八叉树或Kd树等空

如何在openGL 3.x中实现glPopName和glPopName的功能?

openGL-3不再具有选择模式。事实上,没有任何OpenGL实现能够实现硬件加速的选择模式。人们总是进入软件仿真模式

相反,您可以实现其中一个:

  • 用不同的颜色渲染每个对象,用作索引。然后读回感兴趣的区域,然后像往常一样重新渲染场景。这与选择模式非常接近

  • 读回感兴趣区域中的深度缓冲区值,投影回世界位置,并根据场景数据确定哪个对象位于选定位置

或者完全没有OpenGL:

  • 实现光线场景相交测试。使用八叉树或Kd树等空间细分结构进行加速

我要强调的是,对象名称堆栈应由应用程序从渲染对象层次派生,因此只能检测到“顶部”对象。遗憾的是,堆栈上每个对象的深度值都不知道。请考虑你的答案。我的表达式不准确。我想知道——在opengl 3.1中,它丢弃了glPopName、glPushName、butTo以实现类似的函数,选择了什么函数或方法。glPopName和glPushName在最新的opengl API中已被弃用。它被什么替换了?如果不替换,我怎么能得到类似的效果?@yaya:OpenGL是一个纯粹的绘图API。选择填充不是绘图填充,因此它已被删除。现在,您需要自己使用特定于应用程序的方法来实现这一点。我给了你三个选择。