console
function main() {
const canvas = document.querySelector('#c')
const gl = canvas.getContext('webgl')
if (!gl) {
return;
}
const program = webglUtils.createProgramFromScripts(gl, ['vertex-shader-2d', 'fragment-shader-2d'])
const positionAttributeLocation = gl.getAttribLocation(program, 'a_position');
const resolutionUniformLocation = gl.getUniformLocation(program, 'u_resolution');
const positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
const positions = [
10, 20,
80, 20,
10, 30,
10, 30,
80, 20,
80, 30
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
webglUtils.resizeCanvasToDisplaySize(gl.canvas);
gl.clearColor(0, 0, 0, 0);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.useProgram(program);
gl.enableVertexAttribArray(positionAttributeLocation);
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
const size = 2;
const type = gl.FLOAT;
const normalize = false;
const stride = 0;
const offset = 0;
gl.vertexAttribPointer(positionAttributeLocation, size, type, normalize, stride, offset);
gl.uniform2f(resolutionUniformLocation, gl.canvas.width, gl.canvas.height);
const primitiveType = gl.TRIANGLES;
const offset_1 = 0;
const count_1 = 6;
gl.drawArrays(primitiveType, offset_1, count_1)
}
main()
<canvas id="c" width="400" height="300"></canvas>
<script id="vertex-shader-2d" type="shader">
attribute vec4 a_position;
uniform vec2 u_resolution;
void main() {
vec2 zeroToOne = a_position.xy / u_resolution;
vec2 zeroToTwo = zeroToOne * 2.0;
vec2 clipSpace = zeroToTwo - 1.0;
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);
}
</script>
<script id="fragment-shader-2d" type="shader"">
precision mediump float;
void main() {
gl_FragColor = vec4(1, 0, 0.5, 1);
}
</script>