マルチスレッドを使用したオブジェクトの作成
ID3D11Device インターフェイスを使用してリソースとオブジェクトを作成し、レンダリングに ID3D11DeviceContext を使用します。
リソースを作成する方法の例をいくつか次に示します。
マルチスレッドに関する考慮事項
アプリケーションで実現できるリソースの作成とレンダリングのコンカレンシーの量は、ドライバーが実装するマルチスレッド サポートのレベルによって異なります。 ドライバーが同時実行作成をサポートしている場合、アプリケーションのコンカレンシーの問題ははるかに少なくなります。 ただし、ドライバーが同時オブジェクトの作成をサポートしていない場合、コンカレンシーの量は非常に制限されます。 ドライバーで使用できるサポートの量を理解するには、ドライバーに対して、D3D11_FEATURE_DATA_THREADING構造体の DriverConcurrentCreates メンバーの値を照会します。 マルチスレッドのドライバーサポートの確認の詳細については、「 方法: ドライバーのサポートを確認する」を参照してください。
同時実行操作によってパフォーマンスが向上するとは限りません。 たとえば、テクスチャの作成と読み込みは通常、メモリ帯域幅によって制限されます。 複数の CPU コアがアイドル状態の場合でも、複数のテクスチャを作成して読み込もうとすると、一度に 1 つのテクスチャを実行するよりも高速になる可能性があります。 ただし、複数のスレッドを使用して複数のシェーダーを作成すると、この操作がメモリ帯域幅などのシステム リソースに依存することが少ないため、パフォーマンスが向上する可能性があります。
ドライバーとグラフィックス ハードウェアでマルチスレッドがサポートされている場合は、通常、 pInitialData パラメーター ( ID3D11Device::CreateTexture2D メソッドの呼び出しなど) で初期データへのポインターを渡すことで、新しく作成されたリソースをより効率的に初期化できます。
関連トピック