私は Cocos2d HTML5 フレームワークを試していますが、これは標準的な WebGL の問題であり、このトピックについて十分な知識がないため特定できません。ソフト エッジなどの半透明ピクセルを含む標準の PNG 画像があり、背景 (キャンバスまたは RenderTexture の背後にあるその他の要素) が黒以外の色で塗りつぶされている場合、RenderTexture に描画されたスプライトは最終的に必要がない場合でも背景。たとえば、描画しているグラフィックが赤で、緑の背景を使用している場合、半透明のピクセルは最終的に黄色に変化します。次の図を参照してください。
真っ黒な背景に映える姿、これが私の望み
背景がにじみ出ている、黒以外の背景に対する外観
100% 不透明でない画像を配置すると、背景にあるものはすべて透けて見えます。
完全な JavaScript ベースの RenderTexture クラス コードは、cocos2d/misc_nodes/CCRenderTexture.js の下の cocos2d-html5 Github リポジトリで見ることができます。Cocos2d-x C++ / Objective C (この問題は発生しません) からの変換です。cocosd-iphone issue tracker で問題番号 937 が報告され、数年前に非 HTML バージョンで同じ問題が報告されました。その後解決されましたが、解像度が何であるか、またはどのように WebGL 形式に変換できるかを判断できないようです。ブレンドの問題だと確信していますが、ブレンドモードを(GL_ONE、GL_ONE_MINUS_SRC_ALPHAからGL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHAなどに)変更しようとしましたが、役に立ちませんでした。
OpenGL / WebGL の専門家からの助けをいただければ幸いです。この RenderTexture の外で Cocos2d の標準の「スプライト」を使用すると、問題は発生しません。また、MotionStreak 機能も問題なく動作しているようですが、今後使用する動的テクスチャを作成するには RenderTexture が必要です。