Skip to content

Instantly share code, notes, and snippets.

@diska
Created January 12, 2022 12:23
Show Gist options
  • Save diska/dde4535af6aca827badeb8cdcb21d743 to your computer and use it in GitHub Desktop.
Save diska/dde4535af6aca827badeb8cdcb21d743 to your computer and use it in GitHub Desktop.
gltf+bin出力したbin中の頂点データ拾ってWebGLで表示するだけのコード。
<canvas width="256" height="256"></canvas>
<script>"use strict";
let vsrc=`attribute vec4 p;void main(){gl_PointSize=3.;
gl_Position=p; gl_Position.w=2.;
}`;
let fsrc=`void main(){gl_FragColor=vec4(1);}`;
let cx=document.querySelector("canvas").getContext("webgl");
let pg=cx.createProgram();{
let vs=cx.createShader(cx.VERTEX_SHADER);cx.attachShader(pg,vs);
let fs=cx.createShader(cx.FRAGMENT_SHADER);cx.attachShader(pg,fs);
cx.shaderSource(vs,vsrc);cx.compileShader(vs);
cx.shaderSource(fs,fsrc);cx.compileShader(fs);cx.linkProgram(pg);
}
let bf=[];
/**@param{ArrayBuffer}r*/
let buffer=(r)=>{
let f32=new Float32Array(r);// r.slice(0,1966*4*3)
cx.bindBuffer(cx.ARRAY_BUFFER,bf[0]=cx.createBuffer());{
cx.bufferData(cx.ARRAY_BUFFER,f32,cx.STATIC_DRAW);
cx.enableVertexAttribArray(0);
cx.vertexAttribPointer(0,3,cx.FLOAT,false,0,0);
};cx.bindBuffer(cx.ARRAY_BUFFER,null);
}
let draw=(now)=>{
cx.clearColor(0,0,1,1);cx.clear(0x4000);
cx.drawArrays(0,0,1966);
// requestAnimationFrame(draw);
}
let run=()=>{cx.useProgram(pg);requestAnimationFrame(draw)}
fetch("suzanne0103.bin").then(r=>r.arrayBuffer()).then(buffer).then(run);
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment