知道了,看了MSDN,发现我对此参数理解有偏差
If FALSE, depth comparisions are still made according to the render state D3DRS_ZFUNC, assuming that depth buffering is taking place, but depth values are not written to the buffer.
也就是说虽然没有改写深度缓存,但是深度比较测试还是进行了的。所以此参数设定为FALSE后的一切绘制相当于与FALSE前深度缓存做比较,因为每次测试成功就绘制,相应地帧缓存改变,而深度缓存没变,以关闭写缓存前的深度值为基准,我们看到的就是分为两部分,远离深度部分,深度测试总失败,重叠部分不绘制,比原深度更靠近部分,深度测试总成功,所以总绘制,所以这部分看到的深度效果是与渲染顺序有关的,只要大于原深度,越靠后的就越靠上。这个过程中深度缓存没有改变,但帧缓存一直在改变。所以我猜测,帧缓存的更新是在深度缓存之前的,在深度测试时每次对比点深度都会将近的点的像素写到帧缓存,但不一定写到深度缓存,写不写就取决于D3DRS_ZWRITEENABLE了,不管写不写,下次深度测试依旧进行,依旧将新的点更新到帧缓存(只不过不写深度缓存的话,对比对象没有变),如此推测,在关掉写深度缓存后,帧缓存与深度缓存是不同步的,而且是很可能。不知我猜测的对否