code: function createAttributeSetters(gl, program) {
      var attribSetters = {
      };
  
      function createAttribSetter(index) {
        return function(b) {
            gl.bindBuffer(gl.ARRAY_BUFFER, b.buffer);
            gl.enableVertexAttribArray(index);
            gl.vertexAttribPointer(
                index, b.numComponents || b.size, b.type || gl.FLOAT, b.normalize || false, b.stride || 0, b.offset || 0);
          };
      }
  
      var numAttribs = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
      for (var ii = 0; ii < numAttribs; ++ii) {
        var attribInfo = gl.getActiveAttrib(program, ii);
        if (!attribInfo) {
          break;
        }
        var index = gl.getAttribLocation(program, attribInfo.name);
        attribSetters[attribInfo.name] = createAttribSetter(index);
      }
  
      return attribSetters;
    }
docs: Creates setter functions for all attributes of a shader
  program. You can pass this to {@link module:webgl-utils.setBuffersAndAttributes} to set all your buffers and attributes.
  
  @see {@link module:webgl-utils.setAttributes} for example
  @param {WebGLProgram} program the program to create setters for.
  @return {Object.<string, function>} an object with a setter for each attribute by name.
  @memberOf module:webgl-utils