_createProgramFromString (gl, shader) {
    shader.compiledVertexShader = this._compileShader(gl, shader.vertexSource, gl.VERTEX_SHADER)
    shader.compiledFragShader = this._compileShader(gl, shader.fragSource, gl.FRAGMENT_SHADER)
    return this._createProgram(gl, shader.compiledVertexShader, shader.compiledFragShader)
  }
/** Creates a webgl program
   *
   * @param {object} gl - webgl context
   * @param {object} shader - object containing the vertexSource and fragSource strings
   * @returns {object} webgl program
   * @private
   */
Creates a webgl program
@param {object} gl - webgl context
@param {object} shader - object containing the vertexSource and fragSource strings
@returns {object} webgl program
@private
Creates a webgl program @param { object } gl - webgl context @param { object } shader - object containing the vertexSource and fragSource strings @returns { object } webgl program @private
_createProgramFromString (gl, shader) {
    shader.compiledVertexShader = this._compileShader(gl, shader.vertexSource, gl.VERTEX_SHADER)
    shader.compiledFragShader = this._compileShader(gl, shader.fragSource, gl.FRAGMENT_SHADER)
    return this._createProgram(gl, shader.compiledVertexShader, shader.compiledFragShader)
  }
_createProgramFromString ( gl , shader ) { shader . compiledVertexShader = this . _compileShader ( gl , shader . vertexSource , gl . VERTEX_SHADER ) shader . compiledFragShader = this . _compileShader ( gl , shader . fragSource , gl . FRAGMENT_SHADER ) return this . _createProgram ( gl , shader . compiledVertexShader , shader . compiledFragShader ) }
Creates a webgl program
 @param {object} gl - webgl context
 @param {object} shader - object containing the vertexSource and fragSource strings
 @returns {object} webgl program
 @private
Creates a webgl program @param { object } gl - webgl context @param { object } shader - object containing the vertexSource and fragSource strings @returns { object } webgl program @private