OPENGL的ZBUF取值在-1~1之间,而DX的ZBUF取值在0~1之间
其实,这就是z-test的原因;当每个像素被写入时,渲染器首先检查是否已经存在一个z值更小的像素,如果不存在,这个像素就被绘制出来;如果存在,就跳过该像素。这段话也就说明了dx中z为0.0的永远处于最前面。而如果我把z-test关闭调之后,一切都ok了。所以这个bug的解决方案就有了2个。最后附带下:

z必须是z-buffer中的像素的深度值。Z值的范围可以从0.0到1.0,离观察者最近的地方为0.0,观察范围内最远可见的地方为1.0,这里取0.5,RHW(齐次坐标)为1(它通常是沿z-轴从观察点到顶点的距离,可以参考一些图形学的书。一般这个参数设置为1)。