Skip to content

Instantly share code, notes, and snippets.

@diska
Last active March 31, 2018 13:14
Show Gist options
  • Select an option

  • Save diska/481c52cc8124f976cd486b2f712e6723 to your computer and use it in GitHub Desktop.

Select an option

Save diska/481c52cc8124f976cd486b2f712e6723 to your computer and use it in GitHub Desktop.
多分可読でポリゴン描く30行以下のWebGLコード。
<canvas id="CNVS" width="512px" height="512px"></canvas>
<script>
const vsrc="attribute vec4 p;void main(){gl_Position=vec4(p.xy*.9,0.,1.);}";
const fsrc="void main(){gl_FragColor=vec4(1);}";
const gl=document.getElementById("CNVS").getContext("webgl");
enableStaticAttr2f(gl,0, new Float32Array([-1,-1,-1,1,1,-1,1,1]));
var prg,vs,fs;
vs=gl.createShader(gl.VERTEX_SHADER); setSource(vs,vsrc); log(compile(vs));
fs=gl.createShader(gl.FRAGMENT_SHADER); setSource(fs,fsrc); log(compile(fs));
prg=gl.createProgram(); attach(prg,vs); attach(prg,fs); log(link(prg));
gl.useProgram(prg);
gl.clearColor(0,.5,0,1); gl.clear(gl.COLOR_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
function attach(p, s){gl.attachShader(p,s);}
function setSource(s,src){gl.shaderSource(s,src);}
function compile(s){gl.compileShader(s);return gl.getShaderInfoLog(s);}
function link(p){gl.linkProgram(p);return gl.getProgramInfoLog(p);}
function enableStaticAttr2f(gl, attr, data){
var buf=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,buf);
gl.enableVertexAttribArray(attr);
gl.vertexAttribPointer(attr, 2, gl.FLOAT, false,0,0);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW)
}
function log(str){console.log(str);}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment