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

Function createProgram

src/webgl.js:19–60  ·  view source on GitHub ↗
(gl,vertexScript,fragScript)

Source from the content-addressed store, hash-verified

17}
18
19export function createProgram(gl,vertexScript,fragScript){
20 let vertexShader = createShader(gl, vertexScript, gl.VERTEX_SHADER);
21 let fragShader = createShader(gl, fragScript, gl.FRAGMENT_SHADER);
22
23 let program = gl.createProgram();
24 gl.attachShader(program, vertexShader);
25 gl.attachShader(program, fragShader);
26
27 gl.linkProgram(program);
28
29 let linked = gl.getProgramParameter(program, gl.LINK_STATUS);
30 if (!linked) {
31 var lastError = gl.getProgramInfoLog(program);
32 error("Error in program linking: " + lastError);
33 gl.deleteProgram(program);
34 return null;
35 }
36
37 var positionLocation = gl.getAttribLocation(program, "a_position");
38 var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
39
40 var texCoordBuffer = gl.createBuffer();
41 gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
42 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
43 -1.0, -1.0,
44 1.0, -1.0,
45 -1.0, 1.0,
46 -1.0, 1.0,
47 1.0, -1.0,
48 1.0, 1.0
49 ]), gl.STATIC_DRAW);
50 gl.enableVertexAttribArray(texCoordLocation);
51 gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
52
53 // Create a buffer for the position of the rectangle corners.
54 var buffer = gl.createBuffer();
55 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
56 gl.enableVertexAttribArray(positionLocation);
57 gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
58
59 return program;
60}
61
62export function createShader(gl,script,type){
63 let shader = gl.createShader(type);

Callers

nothing calls this directly

Calls 2

createShaderFunction · 0.70
errorFunction · 0.70

Tested by

no test coverage detected