【发布时间】:2012-02-26 00:16:33
【问题描述】:
我正在尝试理解 Quake3 的源代码。
有人知道 (tr_world.c) 文件中的函数 R_MarkLeaves() 是做什么的吗?
我认为这与门户剔除有关?
我需要知道它是如何工作的,所以我也可以在我的代码中实现它以加快渲染速度。
【问题讨论】:
我正在尝试理解 Quake3 的源代码。
有人知道 (tr_world.c) 文件中的函数 R_MarkLeaves() 是做什么的吗?
我认为这与门户剔除有关?
我需要知道它是如何工作的,所以我也可以在我的代码中实现它以加快渲染速度。
【问题讨论】:
R_MarkLeaves() 标记给定相机/眼睛位置的叶节点(凸壳)的预计算 PVS(潜在可见集)。 BSP树遍历解决了软件渲染的绘制顺序问题(深度排序),但在当时还是造成了过多的overdraw。 PVS 用于修剪从当前节点/位置明显不可见的叶节点。
【讨论】:
glDepthFunc(GL_ALWAYS) 和GL_LESS 模式之间切换(默认)。发生这种情况了吗?