[]shader 问题[关闭]

自己动手丰衣足食是不是所有的 uniform 和attrbuite 都写在 Laya.Value2D 扩展里面 类似

 
    attribute vec2 position;
    attribute vec2 texcoord;
    attribute vec4 color;
    uniform vec2 size;
    uniform mat4 mmat;
    varying vec2 v_texcoord;varying vec4 v_color;
    void main(){
      vec4 pos =mmat*vec4(position.x,position.y,0,1);
      gl_Position = vec4((pos.x/size.x-0.5)*2.0, (0.5-pos.y/size.y)*2.0, pos.z, 1.0);
      v_color = color;v_texcoord = texcoord;}`
class ShaderValue extends Laya.Value2D {
constructor () {
super(0, 0)
var _vlen = 8 * Laya.CONST3D2D.BYTES_PE
this.position = [2, Laya.WebGLContext.FLOAT, false, _vlen, 0]
this.texcoord = [2, Laya.WebGLContext.FLOAT, false, _vlen, 2 * Laya.CONST3D2D.BYTES_PE]
this.color = [4, Laya.WebGLContext.FLOAT, false, _vlen, 4 * Laya.CONST3D2D.BYTES_PE]
}
}




    sprite.customRender = function (context, x, y) {
      context.ctx.setIBVB(x, y, this.iBuffer, this.vBuffer, this.iNum, null, this.customeShader, this.shaderValue, 0, 0)
    }





1.如果我要 动态的,比如随时间改变他 就在customRender 里直接改变 实例的值就可以了?
2. 这里也没说明 如果我要增加 新的 uniform 和attrbuite 我该怎么办?
3.如果我把这个 this.position 改成this.position1 程序就不对了,是否 this.position 是必须的attribute?
4. 代码就是官方的实例,简单说,这个文档没说明白。就写了一大堆
已邀请:

Monica - 知识达人

赞同来自:

你是想实现什么功能呢?可以把需求说出来我们看下如何实现比较好
后续这块的接口会改变,现在不建议使用

要回复问题请先

商务合作
商务合作