答案 0 :(得分:3)
一般情况下,正如您可能知道的那样,JOGL代码直接转换为您可能在网络上看到的任何其他OpenGL示例。
这些天来,基于GL_SELECT
的挑选似乎非常不受欢迎;在规范中弃用,驱动程序执行不当。
您可以使用的替代方案是:
使用唯一颜色渲染每个对象(并禁用所有光照/雾化等),以便通过glReadPixels
确定鼠标所在的对象。 (在拾取阶段后清除缓冲区,以便您可以渲染正常图形)。例如,OpenGL GL_SELECT or manual collision detection?中评分最高的答案解释了这种方法。
光线投射到几何体中(请参阅下面的选择常见问题解答链接)。这也意味着您不必在调用代码的线程中有一个活动的gl上下文,fwiw。
我在同一个应用程序中使用了这两种方法,目前在后者中有很好的效果,但由于该应用程序中的大多数对象都是球体,因此它比任意模型的便宜得多。