ID3D11DeviceContext::SetPredication
レンダリング プレディケートを設定します。
void
SetPredication(
ID3D11Predicate *pPredicate,
BOOL PredicateValue
);
パラメータ
- pPredicate
プレディケートへのポインターです (「ID3D11Predicate」を参照してください)。NULL 値はプレディケーションが "ない" ことを示します。その場合、PredicateValue の値は関連性がなくなりますが、ID3D11DeviceContext::GetPredication に備えて保持されます。 - PredicateValue
TRUE の場合、プレディケートの条件が満たされた場合にレンダリングに作用します。FALSE の場合、プレディケートの条件が満たされない場合にレンダリングに作用します。
戻り値
返されるものはありません。
解説
プレディケーションに使用するプレディケートは、"発行済み" または "シグナル" のいずれかのステートである必要があります。プレディケーションに対してプレディケートが設定されていても、ID3D11DeviceContext::Begin および ID3D11DeviceContext::End の呼び出しは無効です。
このメソッドは、生成されたプレディケート データが PredicateValue と等しい場合に、後続のレンダリングおよびリソース操作コマンドが実際には実行されないことを示すために使用されます。ただし、一部のプレディケートは単なるヒントであるため、実際には操作が実行される場合もあります。
プレディケーションの最大の利用価値として、スピンによるパフォーマンス低下を発生させることなく (ID3D11DeviceContext::GetData からの戻りを待機することなく)、アプリケーションがグラフィック コマンドを発行できることが挙げられます。この場合、ID3D11DeviceContext::GetData が S_FALSE を返すときにプレディケーションが発生することがあります。もう 1 つの方法として、ID3D11DeviceContext::GetData が S_FALSE を返す可能性がある場合、アプリケーションがプレディケーションをフォールバックとして使用する方法が考えられます。ID3D11DeviceContext::GetData から S_OK が返される場合は、アプリケーション独自のロジックに従って、グラフィック コマンドの手動呼び出しをスキップできます。
要件
ヘッダー: D3D11.h 宣言
ライブラリ: D3D11.lib 内容