JSFiddle - React, Tailwind, and code Playground

by Bartosz Zieliński

JavaScript

function testProgram(gl) {
  // Create the test shader
  var program = gl.createProgram();
  var vertexShader = gl.createShader(gl.VERTEX_SHADER);
  var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
  gl.shaderSource(vertexShader, '\
  attribute vec2 vertex;\
  void main() {\
  gl_PointSize = 1.0;\
  gl_Position = vec4(vertex, 0.0, 1.0);\
  }\
  ');
  gl.shaderSource(fragmentShader, '\
  uniform highp sampler2D texture;\
  void main() {\
  gl_FragColor = texture2D(texture, vec2(0.5));\
  }\
  ');
  gl.compileShader(vertexShader);
  gl.compileShader(fragmentShader);
  gl.attachShader(program, vertexShader);
  gl.attachShader(program, fragmentShader);
  gl.linkProgram(program);
  return program;
}
  
function check(gl,format, extensions) {
	for (var i = 0; i < extensions.length; i++) {
    if (!(ext=gl.getExtension(extensions[i]))) {
    	console.log("no ext:" + extensions[i]);
      return false;
    }
  }
  var framebuffer = gl.framebuffer || gl.createFramebuffer();
  gl.framebuffer = framebuffer;
  var frameTexture = gl.createTexture();
  gl.bindTexture(gl.TEXTURE_2D, frameTexture);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, format, null);
  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
  gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, frameTexture, 0);

	var rgba;
  if (format === gl.FLOAT) {
  	rgba = new Float32Array([1,1,0,0]);
  } else {
  	rgba = new Uint16Array([16256,16256,0,0]);
  }
  var secondTexture = gl.createTexture();
  gl.bindTexture(gl.TEXTURE_2D, secondTexture);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
 ...