<canvas id="canvas"></canvas>
<script id="vertexShader" type="x-shader/x-vertex">
attribute vec4 v_position;
void main(){
gl_Position = v_position;
gl_PointSize = 30.0;
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
void main(){
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
</script>
<script>
let canvas = document.getElementById('canvas'),
gl = canvas.getContext('webgl'),
coordinate = new Float32Array([0.25,0,0, -0.25,0,0, 0,0.5,0]),
vertexSource = document.getElementById('vertexShader').innerText,
fragmentSource = document.getElementById('fragmentShader').innerText,
program = initShader(gl, vertexSource, fragmentSource),
v_position = gl.getAttribLocation(program, 'v_position'),
buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer),
gl.bufferData(gl.ARRAY_BUFFER, coordinate, gl.STATIC_DRAW),
gl.vertexAttribPointer(v_position, 3, gl.FLOAT, false, 0, 0),
gl.enableVertexAttribArray(v_position);
gl.drawArrays(gl.TRIANGLES, 0, 3);
//声明初始化着色器函数
function initShader(gl,vertexShaderSource,fragmentShaderSource){
var vertexShader = gl.createShader(gl.VERTEX_SHADER);
var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(vertexShader,vertexShaderSource);
gl.shaderSource(fragmentShader,fragmentShaderSource);
gl.compileShader(vertexShader);
gl.compileShader(fragmentShader);
var program = gl.createProgram();
gl.attachShader(program,vertexShader);
gl.attachShader(program,fragmentShader);
gl.linkProgram(program);
gl.useProgram(program);
return program;
}
</script>
有用收藏点赞哟