Created
March 29, 2017 21:11
-
-
Save mendes5/e09b54ac0598d802adbfb6d040fc645b to your computer and use it in GitHub Desktop.
WebGL Simplest Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //Create the canvas and get the WebGlRederingContext | |
| let ctx = document.createElement('canvas') | |
| let gl = ctx.getContext('webgl') | |
| document.body.appendChild(ctx) | |
| ctx.width = 600 | |
| ctx.height = 600 | |
| gl.viewport(0, 0, 600, 600) | |
| gl.clearColor(0.0, 0.0, 0.0, 1.0) | |
| //Vertex Shader steps | |
| let vShaderSource = | |
| `attribute vec2 aPosition; | |
| void main(){ | |
| gl_Position = vec4(aPosition, 1.0, 1.0); | |
| }` | |
| let vShaderObject = gl.createShader(gl.VERTEX_SHADER) | |
| gl.shaderSource(vShaderObject, vShaderSource) | |
| gl.compileShader(vShaderObject) | |
| if (!gl.getShaderParameter(vShaderObject, gl.COMPILE_STATUS)) | |
| console.error(gl.getShaderInfoLog(vShaderObject)); | |
| //Fragment Shader Steps | |
| let fShaderSource = | |
| `void main(){ | |
| gl_FragColor = vec4(1.0,1.0,1.0,1.0); | |
| }` | |
| let fShaderObject = gl.createShader(gl.FRAGMENT_SHADER) | |
| gl.shaderSource(fShaderObject, fShaderSource) | |
| gl.compileShader(fShaderObject) | |
| if (!gl.getShaderParameter(fShaderObject, gl.COMPILE_STATUS)) | |
| console.error(gl.getShaderInfoLog(fShaderObject)); | |
| //Shader Program steps | |
| let program = gl.createProgram() | |
| gl.attachShader(program, vShaderObject) | |
| gl.attachShader(program, fShaderObject) | |
| gl.linkProgram(program) | |
| if (!gl.getProgramParameter(program, gl.LINK_STATUS)) | |
| console.error(gl.getProgramInfoLog(program)); | |
| gl.useProgram(program) | |
| //Triangle steps | |
| let positionBufferData = [0.0, 0.9, -0.9, -0.9, 0.9, -0.9] | |
| let positionBuffer = gl.createBuffer() | |
| gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer) | |
| gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positionBufferData), gl.STATIC_DRAW) | |
| let aPosition = gl.getAttribLocation(program, 'aPosition') | |
| gl.vertexAttribPointer(aPosition, 2, gl.FLOAT, gl.FALSE, 0, 0) | |
| gl.enableVertexAttribArray(aPosition) | |
| //Draw | |
| gl.clear(gl.COLOR_BUFFER_BIT) | |
| gl.drawArrays(gl.TRIANGLES, 0, 3) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment