没有 glGet* 调用的 opengl 平截头体剔除

发布于 2024-08-04 04:26:02 字数 330 浏览 13 评论 0原文

视锥体计算的各种示例使用 glGetFloatv() 来获取当前投影和模型视图矩阵(GL_PROJECTION_MATRIX、GL_MODELVIEW_MATRIX),并基于此进行一些视锥体剔除。

我读到 glGet* 是您在主渲染循环中不想要的东西;

“使用“Get”或“Is”函数会减慢速度 降低渲染性能。这些 命令强制图形系统 执行之前所有排队的 OpenGL 调用 它可以回答“Get”或“Is” 查询。”

我的问题是。如何在我的代码中创建可靠的截锥体剔除算法并 我应该把它放在哪里才能确保这种停顿永远不会发生?

Various examples of view frustum calculations are using glGetFloatv() to get the current projection and modelview matrices (GL_PROJECTION_MATRIX, GL_MODELVIEW_MATRIX), and based of that do some view frustum culling.

I have read that glGet* is something you do not want in your main render loop;

"Using "Get" or "Is" functions slows
down render performance. These
commands force the graphic system to
execute all queued OpenGL calls before
it can answer the "Get" or "Is"
query."

So my question is. How do I create a solid Frustum culling algorithm in my code and
where do I put it in order to ensure that this stalling never happens?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

π浅易 2024-08-11 04:26:02

您始终可以将当前矩阵存储在您的应用程序中,这样当您需要它们时,您不需要进行 glGet 调用,您可以直接获取它们......

You could always store the current matrices in your app so that when you want them you don't need to make a glGet call, you can just grab them ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文