LoginSignup
2
1

More than 5 years have passed since last update.

DirectX11のディファードコンテキスト

Last updated at Posted at 2018-11-03

 DirectX11にはマルチスレッドでコマンドを生成できるディファードコンテキストというものがあるのですが、どうもこれNVIDIA製のGPUでしか使えないようで、AMD、IntelはNGのようです。
 AMD、Intel製の場合、ソフトウェアでエミュレーションするので、メインスレッドでしか使えない即時コンテキストを使う場合よりも結果が悪くなることがあるようです。
 なので、下記のように初期化時にデバイスの情報を取得して、シングルスレッド描画を行う場合とマルチスレッド描画を行う場合とで、処理を分岐させる必要があるようです。

//デバイスのマルチスレッドサポートの機能を調べる。
m_pd3dDevice->CheckFeatureSupport(
    D3D11_FEATURE_THREADING,
    &m_featureDataThreading,
    sizeof(m_featureDataThreading)
);

if (m_featureDataThreading.DriverCommandLists == TRUE) {
    //デバイズがディファードコンテキストに対応しているので
    //ディファードコンテキストを作成。
    m_pd3dDevice->CreateDeferredContext(0, &m_pDeferredDeviceContext);
}

ディファードコンテキストってただのコマンドバッファじゃなかったんですね・・・。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1