我们详细看看init中的几个参数:
1. _globalZOrder
在这里是0,我们没有设置需要全局进行渲染。
2. _texture->getName()
这个参数是纹理缓存。从何而来呢?
该参数是Texture2D* 对象。在加载图片的时候进行了设置
3. getGLProgramState()
GLProgramState 主要封装了 GLProgram* 对象
-GlProgramState是什么时候得到的值呢?这就要从Sprite的create说起了,Sprite创建时,在
Sprite::initWithTexture
4. _blendFunc BlendFunc blendType
定义了像素的混合类型
Sprite使用的是:
const BlendFunc BlendFunc::ALPHA_PREMULTIPLIED = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
5. _quad V3F_C4B_T2F_Quad* quad
在加载图片成功后,赋值
包括颜色 顶点 纹理UV坐标
6.1 ssize_t quadCount
在这里是1
7. transform const Mat4 &mv
指的是当前Sprite的Model矩阵
纵观这几个参数,相对来说,
_texture->getName()
_quad
是我们OpenGL针对Sprite渲染来说特别重要的参数
具体的OpenGL渲染就相对简单了:
在RenderQueue中,遍历访问到某一个QuadCommand后,进行两步重要操作:
1. void Renderer::visitRenderQueue(const RenderQueue& queue)
将命令整合(QuadCommand),放在
_batchedQuadCommands.push_back(cmd);
2.会最终调用 渲染
void Renderer::drawBatchedQuads()
在这里,会遍历QuadCommand,读取
A.顶点
B.索引固定
C.使用纹理