我想知道在可编程管线中进行截锥体裁剪最有效的方法是什么。我的意思是,如果我理解正确,在这里描述的方法(顺便说一下,这是一种曾经对我有用的方法):几何方法,像glGetFloatv(GL_MODELVIEW_MATRIX, ...)这样的函数不再有效,因为最终的顶点位置是在着色器阶段计算的。在渲染之前,我是否需要为每个边界框变换在客户端上计算截锥面?谢谢。
frustum culling的想法是在第一时间防止多边形被发送到GPU,因为你已经知道那些多边形在顶点着色器之后会被剔除。所以想法是防止顶点着色器转换那些多边形。使用着色器或不使用,最好的方法是在客户端跟踪截锥体平面,并遍历场景图(可以是分层树或仅是列表),并消除位于截锥体外部的对象,不要使用glGetFloatv或其等效物,因为这不是有效的,它将从GPU复制数据。您可以使用反馈缓冲区代替。