【WebGL】二、通过attribute变量实现坐标变动

一、本文目的

当成功绘制图形后,需要对图形位置进行变动,故需要使用 attribute 变量进行对位置信息的获取和赋值。

二、声明 attribute 变量

   attribute vec4 aPosition;
//存储限定符  类型  变量名
//!!!ps:分号不可缺少

attribute 变量只能在顶点着色器中使用,不能在片元着色器中使用。

//1.顶点着色器源码
    const VERTEX_SHADER_SOURCE = `
    //声明变量 只能在顶点着色器使用
    attribute vec4 aPosition;
    // 必须存在 main 函数
    void main() {
        //点坐标所绘制的位置
        gl_Position = aPosition;//默认vec4(0.0, 0.0, 0.0, 1.0);
        //点的大小
        gl_PointSize = 100.0;
    }`;

三、获取 attribute 变量

通过WebGL的getAttribLocation可获取attribute 变量。

获取 attribute 变量需要在 initShader 函数之后,因为会用到 program 这个程序对象。(若不清楚 initShader 函数,可查看该专栏的:【WebGL】一、画布创建和着色器基本操作及封装

const aPosition = gl.getAttribLocation(program,'aPosition');
//   返回变量的存储地址                   程序对象  指定想要获取存储地址的 attribute 变量的名称

四、给 attribute 变量赋值

给 attribute 变量赋值有四种情况,分别代表传递多少个分量的值

  • gl.vertexAttrib1f(location, v0)
  • gl.vertexAttrib2f(location, v0, v1)
  • gl.vertexAttrib3f(location, v0, v1, v2)
  • gl.vertexAttrib4f(location, v0, v1, v2, v3)
    注解:location: 指定 attribute 变量的存储位置,v0,v1,v2,v3:传入的四个分量的值
gl.vertexAttrib4f(aPosition,0.5,0.5,0.5,1.0);

五、逻辑流程

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmsup

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值