1

透明度/アルパが 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];

アルファ 0.0f とグリーン 1.0 を使用すると、グリーンになります。

本当の問題は、その 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 に答える