JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://learningwebgl.com/lessons/lesson03/webgl-utils.js"></script><body style="background:black;"><center><canvas id="canvas" width="558" height="558" style="background:white;"></canvas></center></body>

<script id="vertex-shader" type="x-shader/x-vertex">
attribute vec4 a_position;
attribute vec2 a_texCoord;

uniform mat4 u_matrix;

varying vec2 v_texCoord;
void main(){
	gl_Position=u_matrix*a_position;
	v_texCoord=a_texCoord;	
}
</script>
<script id="fragment-shader" type="x-shader/x-fragment">
precision mediump float;

varying vec2 v_texCoord;

uniform sampler2D u_sampler;

void main(){
	gl_FragColor=texture2D(u_sampler,vec2(v_texCoord.s,v_texCoord.t));
}
</script>

JavaScript

function getShader(gl, id) {
        var shaderScript = document.getElementById(id);
        if (!shaderScript) {
            return null;
        }

        var str = "";
        var k = shaderScript.firstChild;
        while (k) {
            if (k.nodeType == 3) {
                str += k.textContent;
            }
            k = k.nextSibling;
        }

        var shader;
        if (shaderScript.type == "x-shader/x-fragment") {
            shader = gl.createShader(gl.FRAGMENT_SHADER);
        } else if (shaderScript.type == "x-shader/x-vertex") {
            shader = gl.createShader(gl.VERTEX_SHADER);
        } else {
            return null;
        }

        gl.shaderSource(shader, str);
        gl.compileShader(shader);

        if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
            alert(gl.getShaderInfoLog(shader));
            return null;
        }

        return shader;
    }

$(function(){
	var player={
		x:8,
		y:8,
		orientation:0
	}
	var keys=[];
	
	var canvas=document.getElementById("canvas");
	var gl=canvas.getContext("webgl");
	if(!gl){
		alert("Your browser doesn't support webGL");
		return;
	}
	
	gl.enable(gl.DEPTH_TEST);
	gl.enable(gl.BLEND);
	gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
	
	vertexShader=getShader(gl,"vertex-shader");
	fragmentShader=getShader(gl,"fragment-shader");
	program = gl.createProgram();
    gl.attachShader(program, vertexShader);
    gl.attachShader(program, fragmentShader);
    gl.linkProgram(program);
	gl.useProgram(program);
	
	var positionLocation=gl.getAttribLocation(program,"a_position");
	var texCoordLocation=gl.getAttribLocation(program,"a_texCoord");
	
	var matrixLocation=gl.getUniformLocation(program,"u_matrix");
	var samplerUniform=gl.getUniformLocation(program,"u_sampler");
	
	gl.enableVertexAttribArray(positionLocation);
	gl.enableVertexAttribArray(texCoordLocation);
	
	var mapPositions=[];
	var mapTexCoords=[];
	var mapPosBuffer;
	var mapTexBuffer;
	var mapVert=0;
	
	var...