BasicHLSL10 サンプル
パス
ソース | SDK ルート\Samples\C++\Direct3D10\BasicHLSL10 |
実行可能ファイル | SDK ルート\Samples\C++\Direct3D10\Bin\x86 または x64\BasicHLSL10.exe |
サンプルの概要
このサンプルは、メッシュを読み込み、ファイルからエフェクトを作成します。次に、そのエフェクトを使用してメッシュをレンダリングします。使用されているエフェクトは、簡単な頂点シェーダーで、時間をベースに頂点をアニメーション化します。これは、DXUT を使用して、Direct3D 9 のコードパスと Direct3D 10 のコードパスを切り替えます。ここでは、Direct3D 10 のコードパスのみを説明します。Direct3D 9 のコードパスはこれに類似しています。Direct3D 9 のコードパスについては、Direct3D 9 のドキュメントを参照してください。
サンプルが動作するしくみ
このサンプルでは、最初に D3DX10CreateEffectFromFile を呼び出して、指定された FX ファイルからエフェクトを作成します。
次に、FX ファイルからエフェクト テクニックとエフェクト変数を読み込み、後で使用するためにそれらを格納します。
その次に、読み込むメッシュの入力レイアウトと一致する入力レイアウトを作成します。これは、CDXUTMesh10 によって読みこまれるすべてのメッシュで同じになります。この後、CDXUTMesh10 クラスを使用してジオメトリを読み込みます。これによって内部的に OptimizeInplace() を呼び出して頂点キャッシュのメッシュを最適化し、次に D3DX10CreateTextureFromFile を使用してテクスチャーを読み込みます。
OnD3D10FrameRender では、World*View*Projection 行列などのテクニックによって使用される変数、およびさまざまな ID3DX10Effect::Set* 呼び出しを持つ時間変数を設定します。その後、ID3D10Device::IASetInputLayout を使用してデバイスによって使用されるように、現在の入力レイアウトを設定します。次に、ID3D10Technique::GetDesc を呼び出すことによって、選択したレンダリング テクニック内のパス数が判別されます。テクニック内に含まれる各パスについては、パスが ID3D10EffectPass::Apply を使用してデバイスに適用され、メッシュがレンダリングされます。