3

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

谢谢。

4

1 回答 1

1

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

于 2016-02-08T16:56:18.847 回答