1

cocos2d を使用して RGB サークルのようなことをしようとしています。

ここに画像の説明を入力

移動可能な円 (R 用、B 用、G 用) があり、交差する円の色を自動的に計算したい (特定の領域に新しい色で何かを作成することなく - これが私が使用しているソリューションです) )。

色を自動的に追加する方法はありますか?

私は今何をしていますか?

現在、1x1の空白のpngを(テクスチャとして)使用してから、(円ごとに)の色CCSpriteを変更しています。CCSpritesprite.color = ccc3(r, g, b)

私は何を試しましたか?

スプライトでさまざまなブレンド モードを使用しようとしましたが、mySprite.blendFunc = (ccBlendFunc) { GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA }; いくつかの不透明度を追加しました (スプライトまたはモードを使用してテクスチャに直接 [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]) が、必要な効果が得られません。

Web サイトでいくつかの描画モードの組み合わせを見つけようとしましたが、機能する組み合わせが見つかりませんでした。

4

1 に答える 1

2

1x1 ピクセル テクスチャは推奨されません。古いデバイスでは表示すらされないと思います。少なくとも 2x2 またはそれ以上の 4x4 を使用してください。どれが最小かはわかりません。

ピクセルごとに 1 つのスプライトを作成する場合は、各スプライトが約 400 バイトになることに注意してください (cocos2d のバージョンによって異なります)。つまり、320x480 の画面全体をスプライト ピクセルで埋めると、約 60 MB のメモリが消費されることになります。

ブレンドモードだけで写真と同じ結果が得られるとは思いません。ここで実験できます。シェーダー プログラムを作成するか、重なり合う各スプライトの基本色によって決定される色で塗りつぶされた多角形として各サブセクションをレンダリングする必要があります。

ブレンド モードはスプライト全体 (この場合は円) にしか適用できないため、ブレンド モードは 1 つの交差点に対しては正しいかもしれませんが、背景とブレンドしてしまい、これは望ましくありません。100% 確信があるわけではありませんが、この RGB カラーの追加がブレンド モードだけで機能しないのには技術的な理由があると思います。おそらく、OpenGL ES レンダリングの技術的な理解を深めている人が助けてくれるでしょう。

于 2012-09-10T20:25:05.667 に答える