使用Shader做了一个效果后 发现设置节点的透明度没有效果了。
更改 gl_FragColor = vec4(v.r, v.g, v.b, v.a); v.a设置也没有效果。
请问能不能取消Shader,或者开启Shader之后怎么使节点实现透明的效果?
大神 ,我看了那个帖子啦。
其实我想要的就是渐隐效果 但是不知道怎么做 因为用了Shader后改变节点的opacity没有效果了。
所有Shdaer透明效果怎么做·····顺便问一下有没有办法取消掉Shad
在shader里面可以设置每个像素的透明度
shader是没办法取消的,每个渲染节点都必须有shader
不知道你的意思是不是要恢复默认的shader,如果是的话直接找到cocos默认的shader,设置给节点就可以了
2赞
感谢大大回复解惑~~
不好意思,请教前辈,
cocos默认的shader设置给节点这件事,具体该怎么写呢?
_sgnode.setState(0)
1赞
感謝前輩指點,謝謝
两种方式:
- 使用cocos的接口
this.sp._sgNode.setState(isGray ? 1: 0);
2.把默认shader的内容放到一个自定义的shader里面,当自定义shader使用
1赞
Sprite的shader上的确这样就可以回复了,谢谢
var ShaderUtils = require("ShaderUtils");
cc.Class({
extends: cc.Component,
properties: {
sp: sp.Skeleton
},
onLoad: function () {
ShaderUtils.setShader(this.sp, "gray");
},
});
如图,在编辑器中的效果:
添加shader之后:
1赞
這個讚,感謝大神 (膜拜中)
因為 spine 的 _sgNode 裡沒有 setState 方法,我一直以為不能這樣使用,
您的 _sgNode.setShaderProgram( arg )
方法解了我一個大疑問,太感謝您了
开启Shader之后怎么使节点实现透明的效果 这个楼主你实现了吗,遇到一样的问题了 shader里设置透明度无效
声明shader的地方加入varying vec4 v_fragmentColor;
计算alpha 值的时候 * v_fragmentColor.a
shader有个混合模式,看下设置了没有