現在ゲームを作成しており、「メニュー」ボタンがクリックされたときに画面を覆うオーバーレイを取得しようとしています.
私が持っている現在のセットアップ:
- TiledMapRenderer: TMX タイル (背景/マップ) をレンダリングします。
- SpriteBatch: さまざまなアセット用 (例: プレイヤー画像)
- ステージ:メニューボタンを押し続ける
- ShaderProgram: GLSL を使用してオーバーレイ/シェーディング効果を作成する
- SpriteBatch とマップは ShaderProgram を使用するように設定されています
多くの人が示唆しているように、パフォーマンスのために、私は 1 つの SpriteBatch のみを使用しています。そのため、さまざまなアセットとメニュー ステージの両方で同じスプライト バッチが使用されます。
シェーダーの目的は、暗い/半透明のオーバーレイを追加して画面をグレー表示にすることです。これにより、メニューを開いたときに読みやすくなります。
私が抱えている主な問題は、アセットとメニューが同じ SpriteBatch を共有しているため、同じシェーダーも共有しているため、シェーディング効果を有効にするとすべて(背景とメニュー ボタン) がグレー表示されることです。
SpriteBatch を 1 つだけ使用し、Shader を背景にのみ適用するにはどうすればよいですか (そして、メニュー ボタンを通常/非シェーディングのままにします)?