破案了,但反而更难受了,这个问题可能是MSAA必然的问题,或者说如果要解决没那么轻松。
情况是这样的,先画前一个图(离摄像机近的物体)后画后一个图就和出线异色边。
如图,绿色三角形和像素P(白色大框)的位置关系是这样的。开始MSAA
首先,画绿三角形的时候身后的蓝色三角形还没画,那么这个处在绿三角形边界的像素P就自然和黑色背景求平均了,于是变成深绿色,同时记录了z-Buffer的值。
然后画蓝三角形,但如图所见,像素P位置记录的z-Buffer值更小,因此像素P上根本就不进行蓝三角形的绘制,根本不会调用set_pixel函数,更不会去求平均了。而这个像素上之前的颜色是深绿色,之后也不会改变了。
于是边界出就出现了一条深色线。
总结以下,因为先画近三角形,所以像素P这个点之会画一次。而在这唯一一次画的时机点,应该成为背景的后三角形还没开始画,并不存在,于是就只能和背景色做平均。这就造成了MSAA的黑边。。。