質問: ### 前提・実現したいこと * Cocos2d-JSでシェーダを自作してSpriteにアウトラインをつけたい。 * アウトラインをつけたSprite同士が重なった部分にはアウトラインが表示されないようにしたい。 ### 詳細 Cocos2d-JSでゲームを作っています。 https://github.com/cocos2d/cocos2d-x/blob/v3/tests/cpp-tests/Resources/Shaders/example_Outline.fsh こちらを参考にして自作シェーダを用意し、Spriteにアウトラインが表示されるようにしました。 問題なくアウトラインは表示されたのですが、Spriteが重なった場合にアウトラインが手前に表示されてしまいます。 http://light11.hatenadiary.com/entry/2018/05/13/183314 こちらのページはUnityの例ですが、「モデルを拡大してステンシルバッファを使う方法」で実現しているような事を実現したいです。 しかし上記ページの例は3Dモデルのため法線方向にモデルを拡大するという事が出来るかと思いますが、現在作成中のゲームは2Dのため同じ手法では実現出来ないなと考えております。 重なった部分のアウトラインが手前に表示されない方法はないでしょうか。 何か分かる方いましたらよろしくお願い致します。
回答: その環境のことは知りませんが一般的に、アウトラインの手前に本体を表示したい場合、 まずすべてのアウトラインを描画し、その後すべての本体を描画するという順序で描画するとよいと思います。