commit 7b656b8055658a9da8a23e0a29ce96c5cac8c389 Author: sandyx Date: Sat Feb 15 20:21:01 2025 -0600 draw point diff --git a/index.html b/index.html new file mode 100644 index 0000000..1e27da9 --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + + draw + + + + Oops! + + + + + + + diff --git a/webgl.js b/webgl.js new file mode 100644 index 0000000..ab3e59c --- /dev/null +++ b/webgl.js @@ -0,0 +1,68 @@ +let gl = null; + +function compileShader(id, type) { + const code = document.getElementById(id).innerHTML + const shader = gl.createShader(type); + + gl.shaderSource(shader, code); + gl.compileShader(shader); + + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.log('theres an error'); + console.log(gl.getShaderInfoLog(shader)); + } + + return shader; +} + +function buildShaderProgram(shaderInfo) { + const program = gl.createProgram(); + + shaderInfo.forEach((desc) => { + const shader = compileShader(desc.id, desc.type); + + if (shader) { + console.log('attach') + gl.attachShader(program, shader); + } + }); + + gl.linkProgram(program); + + + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + console.log("Error linking shader program"); + console.log(gl.getProgramInfoLog(program)); + } + + return program; +} + +function main() { + var canvas = document.getElementById('gl-canvas'); + gl = canvas.getContext('webgl'); + var program; + + if (!gl) { + console.log('no gl'); + return; + } + + const shaderSet = [ + { + type: gl.VERTEX_SHADER, + id: "vertex-shader", + }, + { + type: gl.FRAGMENT_SHADER, + id: "fragment-shader", + }, + ]; + + program = buildShaderProgram(shaderSet); + gl.useProgram(program); + + gl.clearColor(0.5, 0.0, 0.0, 1.0); + gl.clear(gl.COLOR_BUFFER_BIT); + gl.drawArrays(gl.POINTS, 0, 1); +}