Last active
September 15, 2018 07:45
-
-
Save diska/a4e9c0448ea7265d496a3167a1c66a79 to your computer and use it in GitHub Desktop.
wgld.org/d/webgl/ のw011-w014の解釈。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <canvas id="CNVS" width="300" height="300"></canvas> | |
| <script> | |
| const vsrc1=`attribute vec4 aPosi;uniform mat4 uMvpm; | |
| void main(void){gl_Position=aPosi*uMvpm;}`; | |
| const fsrc1=`void main(void){gl_FragColor=vec4(1);}`; | |
| var gl=CNVS.getContext("webgl"); | |
| var pg0=getp(gl, vsrc1, fsrc1); | |
| const data=new Float32Array([0,1, 1,0, -1,0]); | |
| var bf0=gl.createBuffer(); | |
| gl.bindBuffer(gl.ARRAY_BUFFER, bf0);{ | |
| gl.enableVertexAttribArray(0); | |
| gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0); | |
| gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); | |
| }; gl.bindBuffer(gl.ARRAY_BUFFER, null); | |
| var uMvpm=gl.getUniformLocation(pg0, "uMvpm"); | |
| gl.useProgram(pg0); | |
| function update(now){ | |
| var theta=now/1000, c=Math.cos(theta), s=Math.sin(theta); | |
| gl.uniformMatrix4fv(uMvpm, false, [c,0,-s,0, 0,1,0,0, s,0,c,0, 0,0,0,2]); | |
| gl.clearColor(0,0,0, 1); gl.clear(0x4000); | |
| gl.drawArrays(5, 0,3); | |
| requestAnimationFrame(update); | |
| }; requestAnimationFrame(update); | |
| function getp(g, vsrc,fsrc){ | |
| var vs=g.createShader(g.VERTEX_SHADER);g.shaderSource(vs,vsrc); | |
| var fs=g.createShader(g.FRAGMENT_SHADER);g.shaderSource(fs,fsrc); | |
| g.compileShader(vs);console.log(`vs:${g.getShaderInfoLog(vs)}`); | |
| g.compileShader(fs);console.log(`fs:${g.getShaderInfoLog(fs)}`); | |
| var p=g.createProgram();g.attachShader(p, vs);g.attachShader(p, fs); | |
| g.linkProgram(p);console.log(`link:${g.getProgramInfoLog(p)}`); | |
| return p; | |
| } | |
| </script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment