appendix/LoadShaderFromFiles
This is an example from the book "WebGL Programming Guide" by Kouichi Matsuda and Rodger Lea
by Ivan Enzhaev
HTML
<canvas id="webgl" width="400" height="400">
Please use a browser that supports "canvas"
</canvas>
<script src="https://dl.dropboxusercontent.com/s/ylw7v7a44xtrwv0/webgl-utils.js"></script>
<script src="https://dl.dropboxusercontent.com/s/iz1n21c8xafd76n/webgl-debug.js"></script>
<script src="https://dl.dropboxusercontent.com/s/subm1yzylxuao8v/cuon-utils.js"></script>
<script src="https://dl.dropboxusercontent.com/s/jw3p82lq1cjwekg/cuon-matrix.js"></script>
JavaScript
// LoadShaderFromFiles.js based on ColoredTriangle.js (c) 2012 matsuda
// This is an example from the book "WebGL Programming Guide"
// by Kouichi Matsuda and Rodger Lea
// Vertex shader program
var VSHADER_SOURCE = null;
// Fragment shader program
var FSHADER_SOURCE = null;
main();
//window.onload = main;
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;
}
// Read shader from file
//readShaderFile(gl, './ColoredTriangle.vert', 'v');
//readShaderFile(gl, './ColoredTriangle.frag', 'f');
// Read shader from file
readShaderFile(gl, 'https://dl.dropboxusercontent.com/s/p9yihxes14zx6gk/ColoredTriangle.vert', 'v');
readShaderFile(gl, 'https://dl.dropboxusercontent.com/s/xdd99o3xo69g6vu/ColoredTriangle.frag', 'f');
}
function start(gl)
{
// Initialize shaders
if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE))
{
console.log('Failed to intialize shaders.');
return;
}
// Set vertex information
var n = initVertexBuffers(gl);
if (n < 0)
{
console.log('Failed to set the vertex information');
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 the rectangle
gl.drawArrays(gl.TRIANGLES, 0, n);
}
function initVertexBuffers(gl)
{
var verticesColors = new Float32Array([
// Vertex coordinates and color
0.0, 0.5, 1.0, 0.0, 0.0,
-0.5, -0.5, 0.0, 1.0, 0.0,
0.5, -0.5, 0.0, 0.0, 1.0,
]);
var n = 3;
// Create a buffer object
var vertexColorBuffer = gl.createBuffer();
if (!vertexColorBuffer)
{
console.log('Failed to create the buffer object');
return false;
}
...