{
const canvas = DOM.canvas(width, height);
const gl = canvas.getContext("webgl");
const program = initShaderProgram(
gl,
vertexConvertToClipSpaceSource,
fragmentRandColorSource
);
const locations = {
attributes: {
position: gl.getAttribLocation(program, "a_position")
},
uniforms: {
resolution: gl.getUniformLocation(program, "u_resolution"),
color: gl.getUniformLocation(program, "u_color")
}
};
gl.viewport(0, 0, width, height);
gl.useProgram(program);
while (true) {
const size = 3;
const positions = _.times(size, (i) => [
_.random(width),
_.random(height)
]).flat();
const [r, g, b, a] = [Math.random(), Math.random(), Math.random(), 1];
const positionBuffer = initPositionBuffer(gl, positions);
setPositionAttribute(gl, positionBuffer, locations.attributes.position);
gl.uniform2f(locations.uniforms.resolution, width, height);
gl.uniform4f(locations.uniforms.color, r, g, b, a);
gl.drawArrays(gl.TRIANGLES, 0, size);
yield Promises.delay(300, canvas);
}
}