図のように、画面には複数のリングがあります。要件は、ユーザーが任意のリングを選択でき、選択したリングがグロー効果を受ける必要があることを示しています(数秒間グローしてから緑色になります)。すべてのグラフィックスレンダリングは、DirectX 9+HLSLを使用して実行されます。私が直面している問題:
- シェーダーコードで選択したリングを他のリングと区別して、グロー効果をそのリングにのみ適用できるようにする方法。
さまざまなrendertargetを操作する必要があります(SetRenderTargetのドキュメント)。まず、選択されていないすべてのリングをバックバッファにレンダリングします。次に、選択したリングをレンダーターゲットとして追加のテクスチャに描画します。グローシェーダーでこのテクスチャを光らせ、最後にテクスチャをバックバッファにレンダリングします。つまり、緑色のリングは光っていて、他のリングはグローシェーダーの影響を受けません。
輝く線が必要で、他の用途にグローシェーダーを使用しない場合は、次の図のように、「太い」線と適切なテクスチャで線を輝かせることができます。
これは、他のアプローチよりも実装がはるかに簡単で、はるかに高速です:)