继上篇:深度缓存
其实在上篇中的新版优化,可知,如果没开启深度缓存,就不可能有深度测试的所以这在相关优化版来说,这篇的内容是不必要的,因为已实现在新优版中的写法会更合理一些,而且内存占用也会少很多,但保留这些久版内容,是未优化的,可读性,理解上会好很快,而且也比较有空间感// @author Jave.Lin
// @date 2016-04-14 23:38
// 以下伪代码,纯属个人的一些片面理解写下的
// 后面再不断学习现有的渲染架构,或是新的架构
// 再逐个重构架构
// 欢迎大家指点
// 深度测试
public class ZTest
{
public function ZTest()
{
}
// 测试指定的x,y坐标对应z深度要不要绘制
public function test(x:int, y:int, z:Number, zbuff:ZBuffer):Boolean
{
var a:int;
for (var i:int = 0; i < zbuff.vec.length; ++i)
{
var lBuff:ZLayerBuffer = zbuff.vec[i];
if (lBuff.z > z) // 后面的深度不用比较
{
break;
}
a += (lBuffer.read(x, y) & 0xff000000) >> 24;
if (a >= 255) // 前面的所有深度最结果为完全不透明
{
return false;
}
}
return true;
}
}