没有 glGet* 调用的 opengl 平截头体剔除
视锥体计算的各种示例使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您始终可以将当前矩阵存储在您的应用程序中,这样当您需要它们时,您不需要进行 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 ...
http://www.lighthouse3d.com/opengl/viewfrustum/
http://www.lighthouse3d.com/opengl/viewfrustum/