EnhancedMesh サンプル

EnhancedMesh サンプルは、Direct3D でのメッシュ テッセレーションの実例を示しています。メッシュ テッセレーションは、メッシュを三角形に分割します。これによって、頂点ごとのライティングであってもよりよいライティング結果を生みだされる、最適なジオメトリ ディティールを持ったメッシュが作成されます。メッシュ テッセレーションは、LOD テクニックを実装するのに使用されることがあります。ここでは、メッシュは多くのディテールでレンダリングされたビューアーに近くなり、少ないディティールでレンダリングされたビューアーからは遠くなります。

Ee417543.enhancedmesh(ja-jp,VS.85).jpg

Path

ソース SDK ルート\Samples\C++\Direct3D\EnhancedMesh
実行可能ファイル SDK ルート\Samples\C++\Direct3D\Bin\x86 または x64\EnhancedMesh.exe

サンプルが動作するしくみ

サンプルは、ハードウェア テッセレーションまたはソフトウェア テッセレーションの 2 つのモードのいずれかで実行可能です。ユーザーは異なる値でテッセレーション レベルを設定し、レベル調整に対してどのようにメッシュを変更するかを示します。

ハードウェア テッセレーション モードで実行されている場合、サンプルは IDirect3DDevice9::SetNPatchMode を呼び出してメッシュをテッセレートします。これは各メッシュ セグメントをテッセレートするデバイスに対するテッセレーション セグメント数を設定します。たとえば、3.0 を指定すると、入力メッシュの各オリジナル セグメントは、3 つのセグメントにテッセレートされます。このテッセレーションは、メッシュがレンダリング ループで描画呼び出しを行った後に、リアルタイムで発生します。

ソフトウェア テッセレーション モードで実行されている場合、サンプルは即時テッセレーションを実行するハードウェアに依存しません。そのため、サンプルはメッシュを処理し、これをレンダリングする前に目的のディティール レベルを取得する必要があります。D3DXTessellateNPatches を呼び出してこれを実行するコードは、入力メッシュとセグメント カウントを取得し、次に入力メッシュのテッセレートされたバージョンを示す別のメッシュを出力します。このサンプルは、次に標準的なメカニズムを使用してこのテッセレートされたメッシュをレンダリングします。