我不明白透明度/ alpa如何与CCRenderTexture一起使用。
使用此代码,我预计红色ColorLayer上的半透明白色(透明度适用于CCLayerColor)。我得到的是完全白色。
此代码刚刚添加到HelloWorldLayer init方法末尾的默认模板中。
CCLayerColor * lc = [CCLayerColor layerWithColor:ccc4(255.0f, 0.0f, 0.0f, 125.0f)];
[self addChild:lc];
CCRenderTexture * rt = [CCRenderTexture renderTextureWithWidth:480.0f
height:320.0f];
[self addChild:rt];
rt.position = ccp(240.0f,160.0f);
[rt beginWithClear:1.0f g:1.0f b:1.0f a:0.5f];
[rt end];
如果我换成黑色,我会得到半透明的黑色:
[rt beginWithClear:0.0f g:0.0f b:0.0f a:0.5f];
使用alpha 0.0f和绿色1.0,我得到绿色 - 预计会有一个清晰的层.. [rt beginWithClear:0.0f g:1.0f b:0.0f a:0.0f];
真正的问题是,在RT中我不能在片段着色器中用白色绘制透明度:
gl_FragColor = vec4( 1.0, 1.0, 1.0, 0.5);
导致完全白色..
有什么想法吗?
答案 0 :(得分:4)
试一试:
[renderTexture.sprite setBlendFunc:(ccBlendFunc){GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];