void TrianglesCommand::init(float globalOrder, GLuint textureID, GLProgramState* glProgramState, BlendFunc blendType, const Triangles& triangles,const Mat4& mv, uint32_t flags)
{
    CCASSERT(glProgramState, "Invalid GLProgramState");
    CCASSERT(glProgramState->getVertexAttribsFlags() == 0, "No custom attributes are supported in QuadCommand");
    
    RenderCommand::init(globalOrder, mv, flags);
    
    _triangles = triangles;
    if(_triangles.indexCount % 3 != 0)
    {
        ssize_t count = _triangles.indexCount;
        _triangles.indexCount = count / 3 * 3;
        CCLOGERROR("Resize indexCount from %zd to %zd, size must be multiple times of 3", count, _triangles.indexCount);
    }
    _mv = mv;
    
    if( _textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst || _glProgramState != glProgramState) {
        
        _textureID = textureID;
        _blendType = blendType;
        _glProgramState = glProgramState;
        
        generateMaterialID();
    }
}
Пример #2
0
void QuadCommand::init(float globalOrder, GLuint textureID, GLProgram* shader, BlendFunc blendType, V3F_C4B_T2F_Quad* quad, ssize_t quadCount, const kmMat4 &mv)
{
    _globalOrder = globalOrder;
    _textureID = textureID;
    _blendType = blendType;
    _shader = shader;

    _quadsCount = quadCount;
    _quads = quad;

    _mv = mv;

    generateMaterialID();
}
Пример #3
0
void QuadCommand::init(float globalOrder, GLuint textureID, GLProgram* shader, BlendFunc blendType, V3F_C4B_T2F_Quad* quad, ssize_t quadCount, const Matrix &mv)
{
    _globalOrder = globalOrder;

    _quadsCount = quadCount;
    _quads = quad;

    _mv = mv;

    if( _textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst || _shader != shader) {
        
        _textureID = textureID;
        _blendType = blendType;
        _shader = shader;
        
        generateMaterialID();
    }
}
Пример #4
0
void QuadCommand::init(float globalOrder, GLuint textureID, GLProgramState* shader, const BlendFunc& blendType, V3F_C4B_T2F_Quad* quads, ssize_t quadCount,
                       const Mat4& mv, uint32_t flags)
{
    CCASSERT(shader, "Invalid GLProgramState");
    CCASSERT(shader->getVertexAttribsFlags() == 0, "No custom attributes are supported in QuadCommand");
    
    RenderCommand::init(globalOrder, mv, flags);
    
    _quadsCount = quadCount;
    _quads = quads;
    
    _mv = mv;
    
    if( _textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst || _glProgramState != shader) {
        
        _textureID = textureID;
        _blendType = blendType;
        _glProgramState = shader;
        
        generateMaterialID();
    }
}