如何将BSP树回溯到前面

时间:2011-12-06 14:35:17

标签: c++ bsp-tree

您好我正在编写一个Quake级渲染器。我到了需要考虑透明度的地步。我知道二进制空间分区(BSP)树的格式化方式是数据按距离排序,或者至少这是我所听到的,但我对如何实现这一点感到茫然。我已经构建了BSP树,并且我的PVS已解码。

我是: 1.弄清楚我在做什么叶子。例如6。 2.从最大值渲染到叶子6,授予这些叶子在我的平截头体和PVS中。 3.从最小值到叶子6渲染,再次考虑PVS和平截头体。

这不是BSP树的工作原理吗?

这就是问题#1。第二个问题涉及PVS。我知道在过去,当太空是一个问题时,PVS很棒,因为它被压缩了。我现在拥有它的方式,每次渲染帧时我都不解压缩PVS,我只做一次并将叶子的可见性存储在渲染过程中遍历的矢量中。这有意义还是适得其反?

再次回顾一下,我可以假设一个BSP树的结构使得叶子已经按距离和叶子6(总共9片叶子)排序,我应该渲染9,8,7,6,1,2 ,3,4,5(假设所有9个在叶6的PVS中都可见),再次考虑到PVS和平截头体。

谢谢。

1 个答案:

答案 0 :(得分:0)

为了渲染回到前面,我建议首先遍历/递归摄像机所在的节点(近节点)。完成后,您将遍历远节点。