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

Function createProgram

demo/js/index.js:12561–12595  ·  view source on GitHub ↗
(gl, vertexScript, fragScript)

Source from the content-addressed store, hash-verified

12559}
12560
12561function createProgram(gl, vertexScript, fragScript) {
12562 var vertexShader = createShader(gl, vertexScript, gl.VERTEX_SHADER);
12563 var fragShader = createShader(gl, fragScript, gl.FRAGMENT_SHADER);
12564
12565 var program = gl.createProgram();
12566 gl.attachShader(program, vertexShader);
12567 gl.attachShader(program, fragShader);
12568
12569 gl.linkProgram(program);
12570
12571 var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
12572 if (!linked) {
12573 var lastError = gl.getProgramInfoLog(program);
12574 error("Error in program linking: " + lastError);
12575 gl.deleteProgram(program);
12576 return null;
12577 }
12578
12579 var positionLocation = gl.getAttribLocation(program, "a_position");
12580 var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
12581
12582 var texCoordBuffer = gl.createBuffer();
12583 gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
12584 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);
12585 gl.enableVertexAttribArray(texCoordLocation);
12586 gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
12587
12588 // Create a buffer for the position of the rectangle corners.
12589 var buffer = gl.createBuffer();
12590 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
12591 gl.enableVertexAttribArray(positionLocation);
12592 gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
12593
12594 return program;
12595}
12596
12597function createShader(gl, script, type) {
12598 var shader = gl.createShader(type);

Callers

nothing calls this directly

Calls 2

createShaderFunction · 0.70
errorFunction · 0.70

Tested by

no test coverage detected