告诉大家一个好消息,「奎特尔星球」微信公众号马上突破800关注,感谢大家的关注与支持!「奎特尔800勇士」即将开启,活动有好礼相送哦!
1赞
感谢分享,很早就关注了公众号,教程真的不错。
前排点赞
教程很好,好多干货
感谢支持!
幫上個連結
https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/03%20Blending/
pass.setBlend(
// 對rgb作混色
gfx.BLEND_FUNC_ADD,
gfx.BLEND_SRC_ALPHA, gfx.BLEND_ONE_MINUS_SRC_ALPHA,
// 對alpha作混色
gfx.BLEND_FUNC_ADD,
gfx.BLEND_SRC_ALPHA, gfx.BLEND_ONE_MINUS_SRC_ALPHA
);
感谢你的帮助
mark~~~
mark
不好意思,之前没在微信上做测试。 感谢你的提示,找到问题,引擎未初始化完成就在调用
if (cc.renderer._forward) {
cc.renderer._forward._programLib.define(shader.name, shader.vert, shader.frag, shader.defines || []);
g_shaders[shader.name] = shader;
} else {
//在微信上初始时cc.renderer._forward不存在,需要等引擎初始化完毕才能使用
cc.game.once(cc.game.EVENT_ENGINE_INITED, function () {
cc.renderer._forward._programLib.define(shader.name, shader.vert, shader.frag, shader.defines || []);
g_shaders[shader.name] = shader;
});
}
代码已经上传github。
1赞
uniform float progress[4];
uniform vec2 centres[4];
问下,这两种应该传入什么对象 ?
下面这样写不报错也没有任何效果,看不到东西。
mat.setParamValue(“progress”, [-1.0,-1.0,-1.0,-1.0] );
mat.setParamValue(“centres”, [
new cc.Vec2(0,0),
new cc.Vec2(0,0),
new cc.Vec2(0,0),
new cc.Vec2(0,0),
] );
已解决,看了render-engine.js源码,根据参数读取方式做修改
比如一个float数组给shader
let $createVec4 = (array)=>{
if (array.length != 4){
cc.warn("$createVec4 长度不一致!",array)
}
const ks = "xyzw";
let vec4={
set(index,value){
this[ ks[index]] = value;
},
get(index){
return this[ ks[index]]
}
};
for (let index = 0;index<4;index++){
vec4[ ks[index] ] = array[index];
}
return vec4;
}
mat.setParamValue("progress", $createVec4([-1.0,-1.0,-1.0,-1.0]) );
及时雨 Colin大神的也看了 无奈基础太差看不懂 感谢补充
请问如何代码里动态创建sprite,然后代码里给sprite指定shader?
我在代码里放了一个动态创建Sprite 并设置Shader的测试场景,你可以参考一下。
1赞
终于没叫ShaderKiller
其实我很多时间取名叫xxxHelper,但分享出来与我项目中的名字一样不太好。