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