好的,我可以为你提供一个简单的代码示例。以下是一个使用 WebGL 绘制贺卡的示例:
HTML 代码:
<canvas id="canvas"></canvas>
JavaScript 代码:
const canvas = document.getElementById('canvas'); const gl = canvas.getContext('webgl'); // 画布初始化 gl.clearColor(1.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // 设置顶点数据 const vertices = [ // 上半部分 -0.5, 0.5, // 左上角 0.5, 0.5, // 右上角 0.5, 0.0, // 右下角 -0.5, 0.0, // 左下角 // 下半部分 -0.5, 0.0, // 左下角 0.5, 0.0, // 右下角 0.5, -0.5, // 右下角 -0.5, -0.5 // 左下角 ]; // 创建缓存区 const vertexBuffer = gl.createBuffer(); // 绑定缓存区 gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); // 将数据写入缓存区 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // 设置顶点着色器 const vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0, 1); } `; const vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // 设置片元着色器 const fragmentShaderSource = ` precision mediump float; uniform vec4 u_color; void main() { gl_FragColor = u_color; } `; const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // 创建着色器程序 const program = gl.createProgram(); // 将着色器附加到程序中 gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); // 绑定着色器变量 gl.bindAttribLocation(program, 0, 'a_position'); // 链接程序 gl.linkProgram(program); gl.useProgram(program); // 设置着色器变量值 const colorLocation = gl.getUniformLocation(program, 'u_color'); gl.uniform4fv(colorLocation, [Math.random(), Math.random(), Math.random(), 1]); // 启用顶点数组 gl.enableVertexAttribArray(0); // 绑定缓存区到着色器变量 gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0); // 绘制图形 gl.drawArrays(gl.TRIANGLES, 0, 6);
这个示例画一个简单的二维图形,并随机着色。如果你想要画贺卡,你可以使用更多的图形和复杂的着色器效果。