深度测试

来源:互联网 发布:linux切换oracle实例 编辑:程序博客网 时间:2024/06/06 02:18

继上篇:深度缓存

其实在上篇中的新版优化,可知,如果没开启深度缓存,就不可能有深度测试的所以这在相关优化版来说,这篇的内容是不必要的,因为已实现在新优版中的写法会更合理一些,而且内存占用也会少很多,但保留这些久版内容,是未优化的,可读性,理解上会好很快,而且也比较有空间感

// @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;    }}
0 0