cocos渲染引擎分析(七)-----shader渲染流程之StateBlock

cocos引擎底层渲染场景时,会根据状态设置(混合函数,深度写入,深度测试,背面裁剪,透明)渲染场景,StateBlock就是控制整个场景状态变换的类。

cocos设计的为每个材质保持一个StateBlock,通过_pMaterial->getStateBlock()获取,状态设置包括以下:

enum{            
    RS_BLEND = (1 << 0),//混合
    RS_BLEND_FUNC = (1 << 1),//混合函数
    RS_CULL_FACE = (1 << 2),//面裁剪
    RS_DEPTH_TEST = (1 << 3),//深度测试
    RS_DEPTH_WRITE = (1 << 4),//深度写入
    RS_DEPTH_FUNC = (1 << 5),//深度比较函数
    RS_CULL_FACE_SIDE = (1 << 6),//裁剪面设置
    RS_FRONT_FACE = (1 << 11),//前面
}
 void setCullFaceSide(CullFaceSide side);
 void setCullFace(bool enabled);
 void setBlendSrc(Blend blend);
 void setBlendDst(Blend blend);
 void setDepthTest(bool enabled);
 void setDepthWrite(bool enabled);等

        每次渲染后使用restore还原状态设置:

void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值