material 里面其它很好理解,重点讲解renderstate,这里所有内容在cocos/renderer/CCRenderState.cpp里面,我这里简单的提炼一下,方便以后使用。
renderState
{
blend=true/false
blendSrc=ZERO/ONE/SRC_COLOR/ONE_MINUS_SRC_COLOR/DST_COLOR/ONE_MINUS_DST_COLOR/
SRC_ALPHA/ONE_MINUS_SRC_ALPHA/DST_ALPHA/ONE_MINUS_DST_ALPHA/
CONSTANT_ALPHA/ONE_MINUS_CONSTANT_ALPHA/SRC_ALPHA_SATURATE
blendSrc=ZERO/ONE/SRC_COLOR/ONE_MINUS_SRC_COLOR/DST_COLOR/ONE_MINUS_DST_COLOR/
SRC_ALPHA/ONE_MINUS_SRC_ALPHA/DST_ALPHA/ONE_MINUS_DST_ALPHA/
CONSTANT_ALPHA/ONE_MINUS_CONSTANT_ALPHA/SRC_ALPHA_SATURATE
cullFace = true/false
cullFaceSide = BACK/FRONT/FRONT_AND_BACK
frontFace=CCW/CW
depthTest = true/false
depthWrite=true/false
depthFunc=NEVER/LESS/EQUAL/LEQUAL/GREATER/NOTEQUAL/GEQUAL/ALWAYS
}
stencilTest等相关内容在文档中被注释掉了,这里就不说了,如果用到了再说。
depthTest作用:用来开启更新深度缓冲区的功能,也就是,如果通过比较后深度值发生变化了,会进行更新深度缓冲区的操作。启动它,OpenGL就可以跟踪再Z轴上的像素,这样,它只会再那个像素前方没有东西时,才会绘画这个像素。在做绘画3D时,这个功能最好启动,视觉效果比较真实。
原文链接:https://www.f2er.com/cocos2dx/341003.html