前言
使用的是 Cocos Creator 2.2.1 版本
已参考过论坛相关帖子,如:
但是依然没有成功,小总结一下,有三个点
- 如何定义 CCProgram 中的 uniform 数组?目前仅支持 vec4 类型数组?
- CCEffect 结构如何定义对应的 uniform 数组?据说是还没有支持?不写也可以吗?
- JS/TS 中如何设置数组进去
或者更具体一点,我怎么传入100个 vec2 点到 Effect 中呢?
使用的是 Cocos Creator 2.2.1 版本
已参考过论坛相关帖子,如:
但是依然没有成功,小总结一下,有三个点
或者更具体一点,我怎么传入100个 vec2 点到 Effect 中呢?
同问 尝试过很多方法都没有成功。
是要自己定义顶点数据吗?
汪~搬个小板凳 坐等大神更新shader教程
相同问题
坐等大佬解答。。。
const mat = this.getComponent(cc.Sprite).getMaterial(0); mat.setProperty('colorArr',new Float32Array(8)); mat.setProperty('colorArr',[0,1,0,1, 1,0,0,1]);
js里这样写可以传
有完整的例子吗?
//js 中最重要是这一句,这里参数是数组长度*数组里向量的维度
mat.setProperty('colorArr',new Float32Array(400));
//这里设置的时候需要把数组里向量的分量展开到一个一维数组
mat.setProperty('colorArr',[]);
//properties中定义,不过我试了这里写不写不影响
colorArr: {value: [0,0,0,0]}
//effect定义
uniform Metaball {
vec4 colorArr[100];
};
谢谢老板,回头试一下先~
试了下,功能没问题,数组里的值能正确传递过去,感谢大神!
看ID好熟悉,几周前拜读过简书上Effect的一系列大作,还扫码支持了一把~
你提到的问题1:uniform数组定义时只能支持vec4数组?
直接定义vec2似乎会有什么padding的报错,用vec4有点空间浪费(先不考虑1个vec4存2个vec2这种做法);
不知道这个问题你那边有没有解决
你可以试试楼上大佬的说法,我没有后续尝试了~
我按照你这样定义的,传值传进去运行的时候警告属性长度不正确啥情况。。