Created
November 5, 2020 18:46
-
-
Save MinaGabriel/b937fa4e859ed85fa85cedce64ad58e9 to your computer and use it in GitHub Desktop.
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
<html lang="en"><head> | |
<meta charset="utf-8"> | |
<title>Translate a Triangle</title> | |
</head><body onload="main()"> | |
<canvas id="webgl" width="800" height="800"> | |
Please use a browser that supports "canvas" | |
</canvas> | |
<script src="https://rawgit.com/huningxin/webglbook_examples/master/lib/webgl-utils.js"></script> | |
<script src="https://rawgit.com/huningxin/webglbook_examples/master/lib/webgl-debug.js"></script> | |
<script src="https://rawgit.com/huningxin/webglbook_examples/master/lib/cuon-utils.js"></script> | |
<script src="https://rawgit.com/huningxin/webglbook_examples/master/lib/cuon-matrix.js"></script> | |
<script type="text/javascript"> | |
// MultiAttributeSize.js (c) 2012 matsuda | |
// Vertex shader program | |
var VSHADER_SOURCE = | |
'attribute vec4 a_Position;\n' + | |
'attribute float a_PointSize;\n' + | |
'void main() {\n' + | |
' gl_Position = a_Position;\n' + | |
' gl_PointSize = a_PointSize;\n' + | |
'}\n'; | |
// Fragment shader program | |
var FSHADER_SOURCE = | |
'void main() {\n' + | |
' gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n' + | |
'}\n'; | |
function main() { | |
// Retrieve <canvas> element | |
var canvas = document.getElementById('webgl'); | |
// Get the rendering context for WebGL | |
var gl = getWebGLContext(canvas); | |
if (!gl) { | |
console.log('Failed to get the rendering context for WebGL'); | |
return; | |
} | |
// Initialize shaders | |
if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { | |
console.log('Failed to intialize shaders.'); | |
return; | |
} | |
// Set the vertex information | |
var n = initVertexBuffers(gl); | |
if (n < 0) { | |
console.log('Failed to set the positions of the vertices'); | |
return; | |
} | |
// Specify the color for clearing <canvas> | |
gl.clearColor(0.0, 0.0, 0.0, 1.0); | |
// Clear <canvas> | |
gl.clear(gl.COLOR_BUFFER_BIT); | |
// Draw three points | |
gl.drawArrays(gl.POINTS, 0, n); | |
} | |
function initVertexBuffers(gl) { | |
var vertices = new Float32Array([ | |
0.0, 0.5, -0.5, -0.5, 0.5, -0.5 | |
]); | |
var n = 3; | |
var sizes = new Float32Array([ | |
10.0, 20.0, 30.0 // Point sizes | |
]); | |
// Create a buffer object | |
var vertexBuffer = gl.createBuffer(); | |
var sizeBuffer = gl.createBuffer(); | |
if (!vertexBuffer || !sizeBuffer) { | |
console.log('Failed to create the buffer object'); | |
return -1; | |
} | |
// Write vertex coordinates to the buffer object and enable it | |
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); | |
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); | |
var a_Position = gl.getAttribLocation(gl.program, 'a_Position'); | |
if(a_Position < 0) { | |
console.log('Failed to get the storage location of a_Position'); | |
return -1; | |
} | |
gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0); | |
gl.enableVertexAttribArray(a_Position); | |
// Bind the point size buffer object to target | |
gl.bindBuffer(gl.ARRAY_BUFFER, sizeBuffer); | |
gl.bufferData(gl.ARRAY_BUFFER, sizes, gl.STATIC_DRAW); | |
var a_PointSize = gl.getAttribLocation(gl.program, 'a_PointSize'); | |
if(a_PointSize < 0) { | |
console.log('Failed to get the storage location of a_PointSize'); | |
return -1; | |
} | |
gl.vertexAttribPointer(a_PointSize, 1, gl.FLOAT, false, 0, 0); | |
gl.enableVertexAttribArray(a_PointSize); | |
// Unbind the buffer object | |
gl.bindBuffer(gl.ARRAY_BUFFER, null); | |
return n; | |
} | |
</script> | |
</body></html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment