JSFiddle - React, Tailwind, and code Playground
HTML
<body>
<canvas id="canvas" width="100" height="100"></canvas>
</body>
JavaScript
var
VERTEX_SHADER_SOURCE = ""+
"attribute vec4 a_Position;"+
"void main() {"+
" gl_Position = a_Position;"+
" gl_PointSize = 10.0;"+
"}",
FRAGMENT_SHADER_SOURCE = ""+
"void main() {"+
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);"+
"}",
canvas = document.getElementById('canvas'),
gl = canvas.getContext('webgl'),
vertexShader = gl.createShader(gl.VERTEX_SHADER),
fragmentShader = gl.createShader(gl.FRAGMENT_SHADER),
shaderProgram = gl.createProgram();
// Compile the shaders.
gl.shaderSource(vertexShader, VERTEX_SHADER_SOURCE);
gl.compileShader(vertexShader);
gl.shaderSource(fragmentShader, FRAGMENT_SHADER_SOURCE);
gl.compileShader(fragmentShader);
// Create linked program.
gl.attachShader(shaderProgram, vertexShader);
gl.attachShader(shaderProgram, fragmentShader);
gl.linkProgram(shaderProgram);
gl.useProgram(shaderProgram);
// Create a buffer with vertex data:
var vertices = new Float32Array([0.0, 0.0, 0.0]),
vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
// Bind position data to attribute 0.
gl.bindAttribLocation(shaderProgram, 0, 'a_Position');
// Assign pointer.
gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(0);
// Clear the canvas.
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
// Draw the point.
gl.drawArrays(gl.POINTS, 0, 1);