diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-05-06 22:28:48 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-05-06 22:28:48 +0200 |
| commit | 5f6ef99eae91f53239f08143cead1249893fef81 (patch) | |
| tree | fac495ea31140060ccd0b916897bbd7adf72fc2f /lib/webgl_utils.js | |
Initial commit
Diffstat (limited to 'lib/webgl_utils.js')
| -rw-r--r-- | lib/webgl_utils.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/webgl_utils.js b/lib/webgl_utils.js new file mode 100644 index 0000000..1386bf7 --- /dev/null +++ b/lib/webgl_utils.js @@ -0,0 +1,51 @@ +/** + * Initializes the WebGL Shader program + */ +export function initializeShaderProgram(gl, vertexShaderSource, fragmentShaderSource) { + + const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vertexShaderSource); + const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource); + + const shaderProgram = gl.createProgram(); + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + console.error(`Unable to initialize shader program: ${gl.getProgramInfoLog(shaderProgram)}`); + return null; + } + + return shaderProgram; +} + +/** + * Initializes the buffers + */ +export function initializeBuffers(gl) { + + const positionBuffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + + return { + position: positionBuffer + }; + } + + +function loadShader(gl, type, source) { + + const shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.error(`Unable to compile shader: ${gl.getShaderInfoLog(shader)}`); + gl.deleteShader(shader); + return null; + } + + return shader; +} |