Newer
Older
pixi.js / packages / core / src / renderers / systems / geometry / setVertexAttribArrays.js
// var GL_MAP = {};

/**
 * @param gl {WebGLRenderingContext} The current WebGL context
 * @param attribs {*}
 * @param state {*}
 */
export default function setVertexAttribArrays(gl, attribs, state)
{
    let i;

    if (state)
    {
        const tempAttribState = state.tempAttribState;
        const attribState = state.attribState;

        for (i = 0; i < tempAttribState.length; i++)
        {
            tempAttribState[i] = false;
        }

        // set the new attribs
        for (i = 0; i < attribs.length; i++)
        {
            tempAttribState[attribs[i].attribute.location] = true;
        }

        for (i = 0; i < attribState.length; i++)
        {
            if (attribState[i] !== tempAttribState[i])
            {
                attribState[i] = tempAttribState[i];

                if (state.attribState[i])
                {
                    gl.enableVertexAttribArray(i);
                }
                else
                {
                    gl.disableVertexAttribArray(i);
                }
            }
        }
    }
    else
    {
        for (i = 0; i < attribs.length; i++)
        {
            const attrib = attribs[i];

            gl.enableVertexAttribArray(attrib.attribute.location);
        }
    }
}