昨天前天实现了三角形光栅化算法,然而在邻近三角形之间出现了裂缝,于是弄了一天,后来,查看了《3D游戏编程大师技巧》的源码的示例,一看,他那没有裂缝,我这代码是按照书本的思路去实现的,经过一翻挣扎把它的代码移植到自己的代码,再经过一翻大修改,F5调试运行,结果仍然有裂缝!我觉得奇怪了,于是再对照了一遍代码,原来还有一个编译开关,于是又把另一编译开关所在的代码复制过来,然后再修改,在修改过的过程中遇到了不少的问题,先是变量的命名,然后就是有些变量没改,导致出现了很奇怪的错误,经过一翻纠正,我怀着兴奋的心情按F5,结果裂缝的问题解决了!
//使用快速版本有裂缝
#if ( (RASTERIZER_MODE==RASTERIZER_FAST) || (RASTERIZER_MODE==RASTERIZER_FASTEST) )
// perform y clipping
//if (y0 < min_clip_y)
if (y0 < TOP_BORDER_SCR)
{
// compute new xs and ys
xs = xs+dx_left*(-y0+TOP_BORDER_SCR);
xe = xe+dx_right*(-y0+TOP_BORDER_SCR);
// reset y0
y0 = TOP_BORDER_SCR;
} // end if top is off screen
if (y2 > BTM_BORDER_SCR)
y2 = BTM_BORDER_SCR;
// make sure top