uniform不能传递顶点数据中的解析,可以通过如下方式在顶点着色器中实现和attribute 同样的坐标效果

来源:2-8 使用 uniform 变量 - 绘制不同颜色的点

幕布斯1301647

2023-10-29

// 顶点着色器
  const VERTEX_SHADER_SOURCE = `
    precision mediump float;
    uniform vec2 uPosition;
    // 只传递顶点数据
    // attribute vec4 aPosition;
    void main(){
      // 绘制点的坐标
      // uniform 也能在顶点着色器中使用,但是不能传递顶点数据中的解析,只能用 uPosition.r 的形式,如下:
      gl_Position = vec4(uPosition.r, uPosition.g, 0.0,1.0);
      // gl_Position = aPosition; // vec4(0.0, 0.0, 0.0, 1.0)
      // 点的大小
      gl_PointSize = 10.0;
    }
  `

使用方法和片元着色器一样

const uPosition = gl.getUniformLocation(program, 'uPosition');
gl.uniform2f(uPosition, pX, pY)
写回答

1回答

yancy

2024-12-30

👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻

0
0

WebGL+Three.js 入门与实战,系统学习 Web3D 技术

前端的技术蓝海,涨薪好选择

1120 学习 · 328 问题

查看课程