javascript 生的WebGL最小コード
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 生的WebGL最小コード相关的知识,希望对你有一定的参考价值。
<!DOCTYPE html>
<html>
<head>
<title>mingl</title>
<meta charset="UTF-8">
<script type="text/javascript" src="script.js"></script>
<script id="vs" type="x-shader/vertex">
attribute vec3 pos;
void main()
{
gl_Position = vec4(pos, 1.0);
}
</script>
<script id="fs" type="x-shader/fragment">
void main()
{
gl_FragColor = vec4(1,0,0,1);
}
</script>
</head>
<body>
<canvas id='canvas'></canvas>
</body>
</html>
window.onload = function()
{
var canvas = document.getElementById('canvas');
canvas.width = canvas.height = 300;
var gl = canvas.getContext('webgl');
var vsObj = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vsObj, document.getElementById('vs').text);
gl.compileShader(vsObj);
var fsObj = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fsObj, document.getElementById('fs').text);
gl.compileShader(fsObj);
var prog = gl.createProgram();
gl.attachShader(prog, vsObj);
gl.attachShader(prog, fsObj);
gl.linkProgram(prog);
if (gl.getProgramParameter(prog, gl.LINK_STATUS)==false)
{
console.log(gl.getProgramInfoLog(prog));
return;
}
gl.useProgram(prog);
var positionAttr = gl.getAttribLocation(prog, "pos");
var data =[
0, 0.5, 0.5,
-0.5, -0.5, 0,
0.5, -0.5, -0.2
];
var vbo = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW);
gl.enableVertexAttribArray(positionAttr);
gl.vertexAttribPointer(positionAttr, 3, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER,null);
gl.clearColor(0,0,0,1);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 3);
};
以上是关于javascript 生的WebGL最小コード的主要内容,如果未能解决你的问题,请参考以下文章
自動化ツール(コード生成パターン抽出)
csharp シェーダのコンパイル部分コード
text 改变コード#memo
php WP PageNaviコード
csharp 三角形描画部分コード
text Emacs文字コード关系#memo