[]shader 问题[关闭]
自己动手丰衣足食是不是所有的 uniform 和attrbuite 都写在 Laya.Value2D 扩展里面 类似
1.如果我要 动态的,比如随时间改变他 就在customRender 里直接改变 实例的值就可以了?
2. 这里也没说明 如果我要增加 新的 uniform 和attrbuite 我该怎么办?
3.如果我把这个 this.position 改成this.position1 程序就不对了,是否 this.position 是必须的attribute?
4. 代码就是官方的实例,简单说,这个文档没说明白。就写了一大堆
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. 代码就是官方的实例,简单说,这个文档没说明白。就写了一大堆
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
Monica - 知识达人
赞同来自:
后续这块的接口会改变,现在不建议使用