使用着色器时高效的截锥体剔除

Efficient frustum culling while using shaders

我想知道使用可编程管道进行视锥体剔除的最有效方法是什么。我的意思是,如果我理解正确,请遵循此处描述的方法:Geometric Aproach(顺便说一句,那里描述的唯一方法在一段时间前对我有用),函数如 glGetFloatv(GL_MODELVIEW_MATRIX, ... ) 不再有效,因为最终顶点位置是在着色器阶段计算的。对于渲染前必须检查的每个边界框变换,我是否必须在客户端计算截锥体平面?

谢谢。

截头体剔除的想法是首先防止多边形被发送到 GPU,那些你已经知道的多边形将在顶点着色器之后被剔除。所以想法是防止顶点着色器转换这些多边形。无论是否使用着色器,最好的方法是在客户端跟踪视锥体平面,遍历场景图(可以是层次树或只是一个列表)并剔除位于视锥体之外的对象,并且不要使用 glGetFloatv 或它的等价物它效率不高,因为它会从 GPU 复制数据。您可以改用 feedback buffers