cocos2dを使用して iPhone ゲームを作成中です。いくつかのスプライトを重ね合わせて、それらに影を落とさせようとしています。
現在、シャドウはスプライトとしてレンダリングされており、ほとんどの部分で問題なく動作しています。ただし、シャドウが最も近いレイヤーに当たるようにするだけです。
私たちが達成しようとしていることをうまく説明できる画像を作成しました。
そして、これが現時点で私たちが持っているものです:
基本的に、スプライトは、Z バッファと同じ深度にあるシャドウの部分のみをレンダリングする必要があります。
glDepthFunc
andをいじってみましたGL_DEPTH_TEST
が、何もうまくいかないようです。
シャドウ スプライト (サブクラス化された CCSprite) をレンダリングする方法は次のとおりです。
- (void)draw {
glDisable( GL_BLEND );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LESS );
glDepthMask( GL_FALSE );
[super draw];
glDepthMask( GL_TRUE );
glDisable( GL_DEPTH_TEST );
glEnable( GL_BLEND );
}
呼び出しはそこにあるだけなので、GL_BLEND
常にスプライトを見ることができます。
影ではないすべてのスプライトが使用glDepthMask( GL_TRUE )
し、各フレームの深度バッファーをクリアしています。
どんな助けでも大歓迎です!