gpt4 book ai didi

OpenGL 从大集合中选取

转载 作者:行者123 更新时间:2023-12-02 07:18:53 24 4
gpt4 key购买 nike

我试图在 JOGL 中从一大组渲染的四边形中进行选择(数千个)。有人有什么建议吗?

为了向您提供更多详细信息,我将大量数据绘制为具有程序创建的纹理的广告牌。

我看过这篇文章 OpenGL GL_SELECT or manual collision detection?并发现它很有帮助。然而,我的程序可能需要长达几分钟的时间才能完成全套渲染,因此我不认为绘制 2x(用于颜色选择)是一种选择。

我当前正在通过调用 glBegin/glVertex.../glEnd 进行绘图。鉴于我使用 vao 和 vbo 在 GPU 上切换到批量渲染,您认为我会获得足够大的加速以促进颜色选择吗?

如果没有,考虑到所有反对使用 GL_SELECT 的建议,您认为我值得使用它吗?

我研究了多线程 CPU 方法来选择这些完全避开 OpenGL 的四边形。 您认为无 OpenGL CPU 解决方案是正确的选择吗?

很抱歉提出所有问题。 我的主要问题仍然是,使用 OpenGL (JOGL) 从一大组四边形中进行选择的好方法是什么?

最佳答案

从大量四边形中进行挑选的最佳方法很难定义。我不太喜欢颜色选择或类似的技术,因为它们在大多数情况下似乎不切实际。我一直不明白为什么有这么多教程专注于 OpenGL 新手,甚至编程专注于挑选,而这对几乎所有事情都是无用的。例如:尝试获取您在高度图中单击的像素:不可能。尝试在您单击的模型中找到精确的网格:不切实际。

如果您有大量四边形,您可能需要良好的空间分区或至少(更好)场景图。好吧,你不需要这个,但它有很大帮助。查看一些场景图教程以获取更多信息,如果您从 3D 编程开始,了解这一点是一件好事,因为您将了解很多概念,而不仅仅是 OpenGl 代码。

那么现在应该做什么来开始挑选呢?在鼠标光标所在的位置取模型 View 矩阵的逆矩阵(带有 glUnproject(...) 的 iirc)。通过相机的方向,您现在可以将光线转换到空间结构(或包含空间结构的场景图)中。现在检查与四边形的碰撞。我目前没有链接,但如果您搜索逆模型 View 矩阵,您应该会找到一些比此处实际执行的更好、更详细地解释这一点的页面。

通过这种基于光线转换的技术,您将能够在 O(log n) 中找到您的四边形,其中 n 是您拥有的四边形的数量。通过一些基于应用程序确切布局的启发式方法(您的问题太笼统而无法更具体),您可以在大多数情况下对此进行很大改进。

一个简单的空间结构是例如四叉树。但是,您应该首先从光线转换开始,以充分理解这项技术。

关于OpenGL 从大集合中选取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com