function createVAOFromBufferInfo(gl, programInfo, bufferInfo) {
      return createVAOAndSetAttributes(gl, programInfo.attribSetters || programInfo, bufferInfo.attribs, bufferInfo.indices);
    }
Creates a ProgramInfo from 2 sources.

A ProgramInfo contains

    programInfo = {
       program: WebGLProgram,
       uniformSetters: object of setters as returned from createUniformSetters,
       attribSetters: object of setters as returned from createAttribSetters,
    }

@param {WebGLRenderingContext} gl The WebGLRenderingContext
       to use.
@param {string[]} shaderSourcess Array of sources for the
       shaders or ids. The first is assumed to be the vertex shader,
       the second the fragment shader.
@param {string[]} [opt_attribs] An array of attribs names. Locations will be assigned by index if not passed in
@param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.
@param {module:webgl-utils.ErrorCallback} opt_errorCallback callback for errors. By default it just prints an error to the console
       on error. If you want something else pass an callback. It's passed an error message.
@return {module:webgl-utils.ProgramInfo} The created program.
@memberOf module:webgl-utils