[]关于要自定shader的同学

1.自定义shader 的时候出现了图片小于512就会出现极小的情况
可以使用 drawToCanvas从游戏中截屏当前sprite 的绘制
let new_texture = sprite.drawToCanvas(width, height, 0, 0)
这里的 width 和height 指的是当前的sprite在游戏中设置的大小
new_texture = ls.Texture.create(new_texture, 0, 0)
 
重新获取纹理然后将textureHost设置为new_texture
sprite.shaderValue.textureHost = new_texture
其他的参照shader原文档
2.要修改shader里面的值
class ShaderValue extends Laya.Value2D {
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]
}
}
// 关于修改shader内部值的操作 
假如有uniform float water_iTime
setShaderValue (sprite) {
// 在这里直接对
sprite.shaderValue.water_iTime += 1
}
    var texture = sprite.image_data
const width = sprite.set_width
const height = sprite.set_height
var new_texture = sprite.drawToCanvas(width, height, 0, 0)
new_texture = ls.Texture.create(new_texture, 0, 0)
sprite.shaderValue = new ShaderValue()
// 关键行
sprite.shaderValue.textureHost = new_texture
sprite.customRender = function (context, x, y) {
_this.setShaderValue(sprite)
context.ctx.setIBVB(x, y, this.iBuffer, this.vBuffer, this.iNum, null, this.customeShader, this.shaderValue, 0, 0)
}
经常有人问,特此标注
已邀请:

你好,小伙儿

赞同来自:

请大佬您用shader在做水面的特效吗?小弟也正在做这个,是我愚钝没有做出来,如果您做出来了还望您贴个代码后者demo指导下,万分感谢

158*****055

赞同来自:

请问ls是什么

Aar0n

赞同来自:

非常好的帖子,感谢分享。

要回复问题请先

商务合作
商务合作