大家好,我在 JOGL 项目中添加拾取对象时遇到了麻烦。我知道这可以通过选择缓冲区来完成。但我找不到任何人的例子?
问问题
2805 次
1 回答
3
一般来说,您可能知道,JOGL 代码直接从您在网络上看到的任何其他 OpenGL 示例转换而来。
GL_SELECT
如今,基于采摘似乎非常不受欢迎;在规范中已弃用并且驱动程序实施不佳。
您可以使用的替代方案是:
使用唯一的颜色渲染每个对象(并且禁用所有照明/雾等),以便您可以通过 确定鼠标悬停在哪个对象上
glReadPixels
。(在拾取阶段后清除缓冲区,以便您可以渲染正常图形)。这种方法由OpenGL GL_SELECT 或手动碰撞检测中的最高评价答案解释?例如。将光线投射到您的几何体中(请参阅下面的选择常见问题解答链接)。这也意味着您不必在调用代码的线程中拥有活动的 gl 上下文,fwiw。
我在同一个应用程序中使用了这两种方法,目前使用后者效果很好,但由于该应用程序中的大多数对象都是球体,因此它比使用任意模型可能便宜得多。
于 2010-12-20T00:22:48.067 回答