1

我不明白透明度/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.0fg:1.0fb:0.0fa:0.0f];

真正的问题在于,在那个 RT 中,我无法在片段着色器中用白色绘制透明度:

    gl_FragColor = vec4( 1.0, 1.0, 1.0, 0.5);

结果是全白..

任何想法?

4

1 回答 1

4

试试看:

[renderTexture.sprite setBlendFunc:(ccBlendFunc){GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];
于 2012-08-28T16:14:04.760 回答