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...