ほとんど静的なCCLabelBMFontがたくさんあるので、プロジェクトでCCRenderTextureを使用したかったのです。それらをすべてシーンに追加すると、パフォーマンスの問題が発生しました(はい、BatchNotesなどを使用できますが、実際には役に立ちませんでした)。そこで、それらを単一のテクスチャにレンダリングして、パフォーマンスを大幅に向上させました! しかし問題は、レンダリングされたテクスチャと直接レンダリングされたノードが異なって見えることです。理由がわかりません!
cocos2d-sample プロジェクトを作成し、これを作成しました:
CCSprite* testImage = [CCSprite spriteWithFile:@"N.png"];
testImage.position = ccp(100,100);
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:786 height:1024];
[rt beginWithClear:0 g:0 b:0 a:0];
[testImage visit];
[rt end];
CCSprite* renderedSprite = [CCSprite spriteWithTexture:rt.sprite.texture];
renderedSprite.position = ccp(386,512);
// Flip because CCRenderTexture is flipped
renderedSprite.flipY = YES;
// Add normal node an the rendered sprite
testImage.position = ccp(130,100);
[self addChild:testImage];
[self addChild:renderedSprite];
結果は次のようになります。
どうすればいいの?どうすれば同じに見えるようになりますか? 右側の N は「通常の」方法で追加されたスプライトで、正しく表示されます。左の N はテクスチャです。
編集:ブレンド関数が異なることを示唆するこのチュートリアルを見つけました。同じように見えるようにするための正しい関数を探しています。