作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道使用可编程管道进行视锥体剔除的最有效方法是什么。我的意思是,如果我理解正确,请遵循此处描述的方法:Geometric Aproach (顺便说一句,那里描述的唯一方法在一段时间前对我有用),像 glGetFloatv(GL_MODELVIEW_MATRIX, ...) 这样的函数不再有效,因为最终的顶点位置是在着色器阶段计算的。对于渲染前必须检查的每个边界框变换,我是否必须在客户端计算截锥体平面?
谢谢。
最佳答案
截头体剔除的想法是首先防止多边形被发送到 GPU,那些您已经知道的多边形将在顶点着色器之后被剔除。所以想法是防止顶点着色器转换这些多边形。无论是否使用着色器,最好的方法是在客户端跟踪视锥平面,遍历场景图(可以是层次树或只是一个列表)并剔除位于视锥之外的对象,并且不要使用 glGetFloatv
或它的等价物它效率不高,因为它会从 GPU 复制数据。您可以使用 feedback buffers相反。
关于opengl-3 - 使用着色器时高效的截锥体剔除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256085/
我是一名优秀的程序员,十分优秀!