我试图执行深度剥离算法,在已经充满不透明物体的场景中绘制透明物体的正确顺序(大部分时间几乎遮挡透明物体的地形)。
我已经将不透明/透明对象的绘制调用分开,首先绘制不透明对象。问题在于每个透明物体的绘制过程都是通过"算法需要实际上会使用它自己的(空)z-buffer,但是我需要在绘制之前检查不透明对象是否遮挡了视图,因此我需要重用绘制不透明后获得的z-buffer对象多次,而不是每个对象。
我知道我可以在将不透明对象绘制到纹理之后转储z缓冲区状态,并在片段着色器中执行它的深度比较,但是我担心在片段着色器中执行深度比较会非常慢。还有另一种更快的方法来解决这个问题吗?
编辑:我的目标是3.X OpenGL版本,因此在这种特殊情况下不能使用A缓冲区。