点动拾取示例

标签 jogl picking

大家好 我在 JOGL 项目中添加拾取对象时遇到麻烦。 我知道这可以通过选择缓冲区来完成..但我找不到示例 有人吗?

最佳答案

一般来说,您可能知道,JOGL 代码直接从您可能在网络上看到的任何其他 OpenGL 示例进行转换。

基于

GL_SELECT 的拣选如今似乎已经非常不受欢迎了;规范中已弃用,并且驱动程序实现不佳。

您可以使用的替代方案是:

  • 使用唯一的颜色渲染每个对象(并禁用所有照明/雾等),以便您可以通过 glReadPixels 确定鼠标位于哪个对象上。 (在拾取阶段后清除缓冲区,以便您可以渲染正常图形)。 OpenGL GL_SELECT or manual collision detection? 中评分最高的答案解释了这种方法。例如。

  • 将光线转换到您的几何体中(请参阅下面的选择常见问题解答链接)。这也意味着您不必在调用代码的线程中拥有事件的 gl 上下文,fwiw。

我在同一个应用程序中使用了这两种方法,目前后者取得了良好的结果,但由于该应用程序中的大多数对象都是球体,因此它比任意模型便宜得多。

http://www.opengl.org/resources/faq/technical/selection.htm

关于点动拾取示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485821/

相关文章:

java - 乔格。 OpenGL。如何更新VBO?

opengl - 应用基于顶点着色器的几何变形的 3D 场景的通用拾取解决方案

c - 为什么我总是在选择时放大? (OpenGL)

javascript - 三人组 : assign different colors to each vertex in a geometry

javascript - GPU 选择在不同设备上不一致

java - glReadPixels 返回的数据比预期多

java - 全屏时视口(viewport)似乎稍微偏离屏幕

java - 如何让相机沿着旋转方向移动?

JOGL 不捕获 Java 鼠标事件

python - 在 matplotlib 3d 散点图中更改数据点的颜色并通过按键将其删除