如何用前端实现炫酷粒子效果(HTML)

养成习惯先赞后看如何用前端实现炫酷粒子效果(HTML)_第1张图片

效果图展示


1.初始化 WebGL 上下文,并创建顶点着色器和片元着色器。                                                                 

// 获取 canvas 元素,并设置 WebGL 上下文
var canvas = document.getElementById('myCanvas');
var gl = canvas.getContext('webgl');

// 定义顶点着色器
var vertexShaderSource = `
    attribute vec2 position;
    void main() {
        gl_Position = vec4(position, 0, 1.0);
    }
`;

// 定义片元着色器
var fragmentShaderSource = `
    void main() {
        gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
    }
`;

// 创建顶点着色器
var vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexShaderSource);
gl.compileShader(vertexShader);

// 创建片元睝色器
var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragmentShader, fragmentShaderSource);
gl.compileShader(fragmentShader);

2.创建程序,并设置视口大小和背景颜色。                                                                                             

// 创建程序
var program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
gl.useProgram(program);

// 设置视口大小和背景颜色
gl.viewport(0, 0, canvas.width, canvas.height);
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);

3.创建顶点数据,并传入缓冲区。                                                                                                       

// 创建顶点数据
var vertices = new Float32Array([
    -0.5, 0.5,
    -0.5, -0.5,
    0.5, -0.5,
    0.5, 0.5
]);

// 创建缓冲区并传入顶点数据
var vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);

4.获取位置属性并启用,然后定义绘制函数。                                                                              

// 获取位置属性并启用
var position = gl.getAttribLocation(program, 'position');
gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(position);

// 绘制函数
function draw() {
    // 更新线条位置和形状的逻辑

    // 清除画布
    gl.clear(gl.COLOR_BUFFER_BIT);

    // 绘制三角形
    gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);

    // 请求下一帧动画
    requestAnimationFrame(draw);
}

5.最后通过 requestAnimationFrame() 方法开始绘制动画。                                                                

// 开始绘制动画
requestAnimationFrame(draw);

全部代码如下:



 
   New Document 
  
  
  
  
  
 

 
 




  
  
  
 

光看不点赞,罚款50

你可能感兴趣的:(前端,html,python,pycharm,javascript)