webgl 着色器attribute mat4 传值问题

本文探讨了在WebGL中使用实例化数组处理重复几何数据的方法,通过平移、旋转和缩放操作实现高效渲染。重点讲解了如何利用attributemat4传递矩阵值,以及通过多次缓冲区绑定实现矩阵的不同部分传入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在做 instance array 的时候,也就是建筑有重复的数据处理时,把它的几何数据提出来,只需要做不同的平移旋转缩放

的操作就可以达到要求;如下:

它只是一个几何,进行多次平移绘制达到的效果,用到了instance 扩展,这里不讲这个,单独拿出来讲,

把它的点,乘上平移旋转缩放的矩阵,绘制出来的就是它,那么attribute mat4 怎么传值进入;

找不到资料,就进行了各种尝试,

结果: 它分四次传入,也就是四次缓冲区,绑定到变量地址,每次的地址+1;

大概就是这样,webgl.instanceMat+1就是矩阵第二行的变量地址;依次类推;

webgl.bindBuffer(webgl.ARRAY_BUFFER,vInstance);
webgl.vertexAttribPointer(webgl.instanceMat,4,webgl.FLOAT,false,0,0);
webgl.enableVertexAttribArray(webgl.instanceMat);
INSTANGBBxt.vertexAttribDivisorANGLE(webgl.instanceMat,1);

webgl.bindBuffer(webgl.ARRAY_BUFFER,vInstance1);
webgl.vertexAttribPointer(webgl.instanceMat+1,4,webgl.FLOAT,false,0,0);
webgl.enableVertexAttribArray(webgl.instanceMat+1);
INSTANGBBxt.vertexAttribDivisorANGLE(webgl.instanceMat+1,1); 

 

INSTANGBBxt.vertexAttribDivisorANGLE(webgl.instanceMat+1,1); 是webgl 扩展的instance array;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值