shaderSource method

Sets and replaces shader source code in a shader object.

IE11

 

Syntax

WebGLRenderingContext.shaderSource(shader, source);

Parameters

shader [in]

Type: WebGLShader

The shader object to set the source code on.

source [in]

Type: String

GLSL source code.

Return value

This method does not return a value.

Remarks

WebGL errorDescription
gl.INVALID_VALUEIf shader isn't a WebGL object or value.
gl.INVALID_OPERATIONIf shader isn't a WebGLShader object.

 

Examples

The following example copies the shader source into a shader object using shaderSource. For more info on this example, see Get started with WebGL.


// Loads a shader from a script tag
// Parameters:
//   WebGL context
//   id of script element containing the shader to load
function getShader(gl, id) {
  var shaderScript = document.getElementById(id);

  // error - element with supplied id couldn't be retrieved
  if (!shaderScript) {
    return null;
  }

  // If successful, build a string representing the shader source
  var str = "";
  var k = shaderScript.firstChild;
  while (k) {
    if (k.nodeType == 3) {
      str += k.textContent;
    }
    k = k.nextSibling;
  }

  var shader;

  // Create shaders based on the type we set
  //   note: these types are commonly used, but not required
  if (shaderScript.type == "x-shader/x-fragment") {
    shader = gl.createShader(gl.FRAGMENT_SHADER);
  } else if (shaderScript.type == "x-shader/x-vertex") {
    shader = gl.createShader(gl.VERTEX_SHADER);
  } else {
    return null;
  }

  gl.shaderSource(shader, str);
  gl.compileShader(shader);

  // Check the compile status, return an error if failed
  if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
    console.log(gl.getShaderInfoLog(shader));
    return null;
  }

  return shader;
}



See also

WebGLRenderingContext

 

 

Show: