MCPcopy Create free account
hub / github.com/codrops/RainEffect / createProgram

Function createProgram

demo/js/main.js:4706–4740  ·  view source on GitHub ↗
(gl, vertexScript, fragScript)

Source from the content-addressed store, hash-verified

4704}
4705
4706function createProgram(gl, vertexScript, fragScript) {
4707 var vertexShader = createShader(gl, vertexScript, gl.VERTEX_SHADER);
4708 var fragShader = createShader(gl, fragScript, gl.FRAGMENT_SHADER);
4709
4710 var program = gl.createProgram();
4711 gl.attachShader(program, vertexShader);
4712 gl.attachShader(program, fragShader);
4713
4714 gl.linkProgram(program);
4715
4716 var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
4717 if (!linked) {
4718 var lastError = gl.getProgramInfoLog(program);
4719 error("Error in program linking: " + lastError);
4720 gl.deleteProgram(program);
4721 return null;
4722 }
4723
4724 var positionLocation = gl.getAttribLocation(program, "a_position");
4725 var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
4726
4727 var texCoordBuffer = gl.createBuffer();
4728 gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
4729 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
4730 gl.enableVertexAttribArray(texCoordLocation);
4731 gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
4732
4733 // Create a buffer for the position of the rectangle corners.
4734 var buffer = gl.createBuffer();
4735 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
4736 gl.enableVertexAttribArray(positionLocation);
4737 gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
4738
4739 return program;
4740}
4741
4742function createShader(gl, script, type) {
4743 var shader = gl.createShader(type);

Callers

nothing calls this directly

Calls 2

createShaderFunction · 0.70
errorFunction · 0.70

Tested by

no test coverage detected