Created
August 28, 2016 07:45
-
-
Save Manish-Kumar317/9568067701f195c3f2a5f8fdbf3eb4a5 to your computer and use it in GitHub Desktop.
color quad
This file contains 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
<!doctype html> | |
<html> | |
<body> | |
<canvas width = "570" height = "570" id = "my_Canvas"></canvas> | |
<script> | |
</script> | |
<script id="jsbin-javascript"> | |
var canvas = document.getElementById('my_Canvas'); | |
gl = canvas.getContext('experimental-webgl'); | |
/*========== Defining and storing the geometry =========*/ | |
var vertices = [ | |
-0.5,0.5,0.0, | |
-0.5,-0.5,0.0, | |
0.5,-0.5,0.0, | |
0.5,0.5,0.0 | |
]; | |
var colors=[0,0,1, 1,0,0, 0,1,0, 1,0,1]; | |
indices = [3,2,1,3,1,0]; | |
// Create an empty buffer object to store vertex buffer | |
var vertex_buffer = gl.createBuffer(); | |
// Bind appropriate array buffer to it | |
gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer); | |
// Pass the vertex data to the buffer | |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); | |
gl.bindBuffer(gl.ARRAY_BUFFER, null); | |
// Create an empty buffer object to store Index buffer | |
var Index_Buffer = gl.createBuffer(); | |
// Bind appropriate array buffer to it | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, Index_Buffer); | |
// Pass the vertex data to the buffer | |
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null); | |
var colorBuffer=gl.createBuffer(); | |
gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer); | |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW); | |
/*====================== Shaders =======================*/ | |
// Vertex shader source code | |
var vertCode = | |
'attribute vec3 coordinates;' + | |
'attribute vec3 color;'+ | |
'varying vec3 vColor;'+ | |
'void main(void) {' + | |
' gl_Position = vec4(coordinates, 1.0);' + | |
'vColor=color;'+ | |
'}'; | |
// Create a vertex shader object | |
var vertShader = gl.createShader(gl.VERTEX_SHADER); | |
// Attach vertex shader source code | |
gl.shaderSource(vertShader, vertCode); | |
// Compile the vertex shader | |
gl.compileShader(vertShader); | |
// Fragment shader source code | |
var fragCode ='precision mediump float;'+ | |
'varying vec3 vColor;'+ | |
'void main(void) {' + | |
' gl_FragColor = vec4(vColor,1);' + | |
'}'; | |
// Create fragment shader object | |
var fragShader = gl.createShader(gl.FRAGMENT_SHADER); | |
// Attach fragment shader source code | |
gl.shaderSource(fragShader, fragCode); | |
// Compile the fragmentt shader | |
gl.compileShader(fragShader); | |
// Create a shader program object to | |
// store the combined shader program | |
var shaderProgram = gl.createProgram(); | |
// Attach a vertex shader | |
gl.attachShader(shaderProgram, vertShader); | |
// Attach a fragment shader | |
gl.attachShader(shaderProgram, fragShader); | |
// Link both the programs | |
gl.linkProgram(shaderProgram); | |
// Use the combined shader program object | |
gl.useProgram(shaderProgram); | |
/* ======= Associating shaders to buffer objects =======*/ | |
// Bind vertex buffer object | |
gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer); | |
// Bind index buffer object | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, Index_Buffer); | |
// Get the attribute location | |
var coord = gl.getAttribLocation(shaderProgram, "coordinates"); | |
// Point an attribute to the currently bound VBO | |
gl.vertexAttribPointer(coord, 3, gl.FLOAT, false, 0, 0); | |
// Enable the attribute | |
gl.enableVertexAttribArray(coord); | |
gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer); | |
var color=gl.getAttribLocation(shaderProgram,"color"); | |
gl.vertexAttribPointer(color,3,gl.FLOAT,false,0,0); | |
gl.enableVertexAttribArray(color); | |
/*============= Drawing the Quad ================*/ | |
// Clear the canvas | |
gl.clearColor(0.5, 0.5, 0.5, 0.9); | |
// Enable the depth test | |
gl.enable(gl.DEPTH_TEST); | |
// Clear the color buffer bit | |
gl.clear(gl.COLOR_BUFFER_BIT); | |
// Set the view port | |
gl.viewport(0,0,canvas.width,canvas.height); | |
// Draw the triangle | |
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0); | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript"> | |
var canvas = document.getElementById('my_Canvas'); | |
gl = canvas.getContext('experimental-webgl'); | |
/*========== Defining and storing the geometry =========*/ | |
var vertices = [ | |
-0.5,0.5,0.0, | |
-0.5,-0.5,0.0, | |
0.5,-0.5,0.0, | |
0.5,0.5,0.0 | |
]; | |
var colors=[0,0,1, 1,0,0, 0,1,0, 1,0,1]; | |
indices = [3,2,1,3,1,0]; | |
// Create an empty buffer object to store vertex buffer | |
var vertex_buffer = gl.createBuffer(); | |
// Bind appropriate array buffer to it | |
gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer); | |
// Pass the vertex data to the buffer | |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); | |
gl.bindBuffer(gl.ARRAY_BUFFER, null); | |
// Create an empty buffer object to store Index buffer | |
var Index_Buffer = gl.createBuffer(); | |
// Bind appropriate array buffer to it | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, Index_Buffer); | |
// Pass the vertex data to the buffer | |
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null); | |
var colorBuffer=gl.createBuffer(); | |
gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer); | |
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW); | |
/*====================== Shaders =======================*/ | |
// Vertex shader source code | |
var vertCode = | |
'attribute vec3 coordinates;' + | |
'attribute vec3 color;'+ | |
'varying vec3 vColor;'+ | |
'void main(void) {' + | |
' gl_Position = vec4(coordinates, 1.0);' + | |
'vColor=color;'+ | |
'}'; | |
// Create a vertex shader object | |
var vertShader = gl.createShader(gl.VERTEX_SHADER); | |
// Attach vertex shader source code | |
gl.shaderSource(vertShader, vertCode); | |
// Compile the vertex shader | |
gl.compileShader(vertShader); | |
// Fragment shader source code | |
var fragCode ='precision mediump float;'+ | |
'varying vec3 vColor;'+ | |
'void main(void) {' + | |
' gl_FragColor = vec4(vColor,1);' + | |
'}'; | |
// Create fragment shader object | |
var fragShader = gl.createShader(gl.FRAGMENT_SHADER); | |
// Attach fragment shader source code | |
gl.shaderSource(fragShader, fragCode); | |
// Compile the fragmentt shader | |
gl.compileShader(fragShader); | |
// Create a shader program object to | |
// store the combined shader program | |
var shaderProgram = gl.createProgram(); | |
// Attach a vertex shader | |
gl.attachShader(shaderProgram, vertShader); | |
// Attach a fragment shader | |
gl.attachShader(shaderProgram, fragShader); | |
// Link both the programs | |
gl.linkProgram(shaderProgram); | |
// Use the combined shader program object | |
gl.useProgram(shaderProgram); | |
/* ======= Associating shaders to buffer objects =======*/ | |
// Bind vertex buffer object | |
gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer); | |
// Bind index buffer object | |
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, Index_Buffer); | |
// Get the attribute location | |
var coord = gl.getAttribLocation(shaderProgram, "coordinates"); | |
// Point an attribute to the currently bound VBO | |
gl.vertexAttribPointer(coord, 3, gl.FLOAT, false, 0, 0); | |
// Enable the attribute | |
gl.enableVertexAttribArray(coord); | |
gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer); | |
var color=gl.getAttribLocation(shaderProgram,"color"); | |
gl.vertexAttribPointer(color,3,gl.FLOAT,false,0,0); | |
gl.enableVertexAttribArray(color); | |
/*============= Drawing the Quad ================*/ | |
// Clear the canvas | |
gl.clearColor(0.5, 0.5, 0.5, 0.9); | |
// Enable the depth test | |
gl.enable(gl.DEPTH_TEST); | |
// Clear the color buffer bit | |
gl.clear(gl.COLOR_BUFFER_BIT); | |
// Set the view port | |
gl.viewport(0,0,canvas.width,canvas.height); | |
// Draw the triangle | |
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0); | |
</script></body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment