JavaScript
let canvas = document.getElementById('canvas');
let gl = canvas.getContext('webgl');
// Setup the data to draw an "X"
let vertices = [
58.12109375, 18.71875, 63.986328125, 29.50390625, 69.8515625, 18.71875, 77.263671875, 18.71875, 68.154296875, 34.23046875, 77.5, 50, 70.001953125,50, 63.986328125, 39.04296875, 57.970703125, 50, 50.47265625, 50, 59.818359375, 34.23046875, 50.708984375, 18.71875, 58.12109375, 18.71875
];
let indices = [11, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 1, 3, 4, 4, 6, 7, 7, 9, 10, 10, 1, 4, 4, 7, 10];
// Vertex shader source code
let vertCode = `attribute vec2 a_position;
uniform vec2 u_resolution;
void main(void) {
vec2 zToOne = a_position / u_resolution;
vec2 zToTwo = zToOne * 2.0;
vec2 clipSpace = zToTwo - 1.0;
// 0,0 is bottom left. Flip the Y so 0,0 is top left...
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1.0);
}`;
// Fragment shader source code
let fragCode = `void main(void) {gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);}`;
// Create a vertex shader object
let vertShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertShader, vertCode);
gl.compileShader(vertShader);
// Create fragment shader object
let fragShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragShader, fragCode);
gl.compileShader(fragShader);
// Create the gl program
let shaderProgram = gl.createProgram();
// Attach the sahders to the program
gl.attachShader(shaderProgram, vertShader);
gl.attachShader(shaderProgram, fragShader);
gl.linkProgram(shaderProgram);
gl.useProgram(shaderProgram);
function draw(){
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
// Do this every tick so we capture all calls in Spector
let vaoExtension = gl.getExtension('OES_vertex_array_object');
let vao = vaoExtension.createVertexArrayOES();
// Vertex buffer
let vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices),...