次の方法で共有


エフェクトのレンダリング (Direct3D 10)

エフェクトは、情報の格納や、ステートのグループを使用したレンダリングに使用できます。各テクニックによって、頂点シェーダー、ジオメトリ シェーダー、ピクセル シェーダー、シェーダー ステート、サンプラー ステート、テクスチャー ステート、およびその他のパイプライン ステートが指定されます。エフェクトにステートを編成すると、エフェクトを作成、レンダリングすることによって、そのステートの結果となるレンダリング エフェクトをカプセル化できます。

エフェクトをレンダリング用に準備するにはいくつかの手順が必要です。最初の手順はコンパイルで、HLSL 言語構文およびエフェクト フレームワーク ルールに対して、HLSL のようなコードをチェックします。API 呼び出しを使用してアプリケーションからエフェクトをコンパイルすることも、エフェクト コンパイラー ユーティリティを使用してオフラインでエフェクトをコンパイルすることもできます。エフェクトが正常にコンパイルされたら、別の (ただし非常に似ている) API セットを呼び出して、エフェクトを作成します。

エフェクトを作成したら、それを使用するために残り 2 つの手順が必要です。まず、ステートを設定するための多くのメソッドを使用して、エフェクト ステートの値 (エフェクト変数の値) を初期化する必要があります。一部の変数については、エフェクトの作成時に 1 回初期化を実行します。それ以外の変数は、アプリケーションからレンダリング ループが呼び出されるたびに更新する必要があります。エフェクト変数が設定されたら、テクニックを適用することによって、エフェクトをレンダリングするようランタイムに指示します。これらのトピックについてはすべて、次の箇所で詳細に説明しています。

当然ながら、エフェクトを使用する場合のパフォーマンスに関する考慮事項があります。エフェクトを使用しない場合でも、これらの考慮事項は概して同じです。ステート変更回数を最小限に抑えることや、更新が必要な変数を頻度によって編成することなどです。これらの方策は、CPU から GPU に送信する必要があるデータの量を最小限に抑え、それによって同期化に関する潜在的な問題を最小限に抑えるために使用されます。

関連項目

エフェクト (Direct3D 10)