use*_*255 5 c++ 3d render bsp-tree
我有一个BSP树加载到内存中.我首先找出我所在的叶子.接下来,我解码PVS.然后,我浏览那个PVS中的每个区域,看看它是否位于我的视锥内.
我被告知这是不正确的渲染方式,我实际上应该通过遍历BSP树进行前后渲染.我到底该怎么做?我已经看到了许多不同的方法,这就是我问的原因.
例如,Quake 3 BSP渲染说:遍历BSP以确定摄像机位于哪个叶子中.检索并解压缩此叶子的PVS,迭代PVS并在BSP中标记叶子.遍历远近的BSP如果未标记节点,请跳过它.测试节点边界框对照相机Frustrum.将当前叶子添加到再现列表中
这仍然是今天完成的标准方式,或者至少对于更简单的游戏而言.
小智 2
正如 OrgnlDave 所说:
当您绘制图元时,放置在 z 缓冲区前面的像素将被绘制,并且程序着色器将被执行。但如果像素位于场景后面,则该像素将被拒绝。没有义务从前到后进行这样的绘制,但性能的提升是最糟糕的。
但是,如果您使用混合对象,则需要在每个实体对象之后绘制这个对象,并从后到前进行。因为您需要将颜色与紧随其后放置的对象混合。