0

DirectX 11でゲームエンジンを設計していますが、ID3D11DeviceContext::IASetInputLayout関数について質問がありました。ドキュメントで私が見つけることができることから、以前に設定されたデバイスに入力レイアウトを設定した場合に関数が何をするかについての言及はありません。コンテキストでは、私が次のことを行う場合:

//this assumes dc is a valid ID3D11DeviceContex interface and that
//ia is a valid ID3D11InputLayout interface.
dc->IASetInputLayout(&ia);

//other program lines: drawing, setting vertex shaders/pixel shaders, etc.

dc->IASetInputLayout(&ia);

//continue execution

これにより、デバイスの状態の切り替えによってパフォーマンスが低下しますか、それともランタイムは入力レイアウトをすでに設定されているものと同等であると認識して戻りますか?

4

2 に答える 2

1

InputLayoutがすでに設定されているかどうかに関連するものも見つかりませんが、ID3D11DeviceContext :: IAGetInputLayoutを呼び出すか、独自の参照を保持して内部チェックを行うことで、すでにバインドされている入力レイアウトへのポインターを取得できます。 ID3D11DeviceContextオブジェクトを呼び出します。

于 2012-01-18T22:21:21.450 に答える
0

私の知る限り、変更がないことを検出する必要があるため、呼び出しは無視されます。ただし、簡単にテストできます。このメソッドを各レンダリングで10000回呼び出すだけで、FPSドロップがどれほど悪いかを確認できます:)

于 2012-01-17T14:40:07.497 に答える