Microsoft DirectX 8.0 (C++) |
StencilMirror サンプルでは、ステンシル バッファを使って、鏡のエフェクトを実現している。このサンプルでは、水に覆われた地形のシーンが、上空を飛行するヘリコプターを反射する水を使ってレンダリングされている。
ステンシル バッファは、ジオメトリをレンダリングするときに更新できる深度バッファの手法で、ほかのジオメトリを描画するためのマスクとして再度使用できる。一般的なエフェクトには、鏡、(高度な手法としての) 影、ディゾルブなどがある。
ステンシルバッファ手法の一部の機能しかサポートしていないカードもある。一部のハードウェアでは、ステンシルバッファをサポートしていない場合や、一部しかサポートしていない場合がある。ステンシル バッファの詳細については、Microsoft® DirectX® SDK のマニュアルを参照すること。
ソース :(SDK ルート)\Samples\Multimedia\Direct3D\StencilBuffer\StencilMirror
実行可能ファイル :(SDK ルート)\Samples\Multimedia\Direct3D\Bin
次の表は実装されているキーを示している。メニュー コマンドを使って同じ操作を行うことができる。
キー | アクション |
---|---|
Enter | シーンを開始および停止する。 |
Space | シーンを少しずつ進める。 |
F2 | 新しいレンダリング デバイスまたはディスプレイ モードを選択するようユーザーに指示する。 |
Alt + Enter | フルスクリーン モードとウィンドウ モードを切り替える。 |
Esc | アプリケーションを終了する。 |
このサンプルでは、ステンシル バッファを使って、水面からの反射のエフェクトを作成している。水のジオメトリはステンシル バッファにレンダリングされる。次に、このステンシル バッファがシーンを再度レンダリングするためのマスクとして使用される。このとき、ジオメトリが上下逆に平行移動されてレンダリングされるので、鏡に反射されているように見える。
このサンプルでは、ヘルパー関数などのプログラミング要素から構成される共通の DirectX コードを使用している。このコードは DirectX SDK のほかのサンプルと共有されている。共通のヘッダーおよびソース コードは、(SDK ルート)\Samples\Multimedia\Common にある。