WebGLShader object

The object that specifies what and how content is to be drawn to the screen.




  <canvas id="canvas"></canvas>
  var gl = document.getElementById("canvas").getContext("experimental-webgl");
  var webGLShader = gl.createShader(type);

DOM Information

Inheritance Hierarchy



The WebGLShader object does not define any members.


Shaders are created using createShader.


The following example gets shader code from a <script> tag in an HTML document, and creates a fragment or vertex shader based on its type. 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);

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

  return shader;

See also