dat*_*olf 14
这个问题通常被称为"挑选".OpenGL本身只是绘制东西,没有几何对象管理可言(OpenGL有对象,但它们是,你通常称之为资源).
这些天实现OpenGL选择的常用方法是在点击位置检索深度值(glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth))并将其取消投影到世界空间(gluUnProject(...))中.这为您(x,y,z)提供了点击的点.
由于您通常会通过将细分结构遍历到点击坐标来管理某些空间细分结构(BSP,Kd等)中的几何体,因此您可以通过该方式检索对象.
另一种方法是将跟随点击的光线投射到场景中并进行光线/边界体积交叉测试.
我强烈反对使用旧的OpenGL选择机制:使用缓慢而繁琐.