CCRenderTexture(alpha)beginWithClear透明白色

时间:2012-08-04 13:23:21

标签: cocos2d-iphone opengl-es-2.0 glsl

我不明白透明度/ 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);

导致完全白色..

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

试一试:

[renderTexture.sprite setBlendFunc:(ccBlendFunc){GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];