Share via


Objekterstellung mit Multithreading

Verwenden Sie die ID3D11Device-Schnittstelle, um Ressourcen und Objekte zu erstellen. Verwenden Sie zum Rendern den ID3D11DeviceContext.

Hier finden Sie einige Beispiele für das Erstellen von Ressourcen:

Überlegungen zu Multithreading

Der Umfang der Parallelität der Ressourcenerstellung und des Renderings, die Ihre Anwendung erreichen kann, hängt von der Ebene der Multithreadingunterstützung ab, die der Treiber implementiert. Wenn der Treiber gleichzeitige Erstellungen unterstützt, sollte die Anwendung viel weniger Parallelitätsprobleme haben. Wenn der Treiber die gleichzeitige Objekterstellung jedoch nicht unterstützt, ist die Parallelität extrem begrenzt. Um den Umfang der in einem Treiber verfügbaren Unterstützung zu verstehen, fragen Sie den Treiber nach dem Wert des DriverConcurrentCreates-Elements der D3D11_FEATURE_DATA_THREADING-Struktur ab. Weitere Informationen zur Überprüfung der Treiberunterstützung von Multithreading finden Sie unter Vorgehensweise: Überprüfen auf Treiberunterstützung.

Gleichzeitige Vorgänge führen nicht unbedingt zu einer besseren Leistung. Beispielsweise wird das Erstellen und Laden einer Textur in der Regel durch die Speicherbandbreite eingeschränkt. Der Versuch, mehrere Texturen zu erstellen und zu laden, ist möglicherweise nicht schneller als eine Textur gleichzeitig, auch wenn dadurch mehrere CPU-Kerne im Leerlauf bleiben. Das Erstellen mehrerer Shader mit mehreren Threads kann jedoch die Leistung steigern, da dieser Vorgang weniger von Systemressourcen wie der Speicherbandbreite abhängig ist.

Wenn der Treiber und die Grafikhardware Multithreading unterstützen, können Sie neu erstellte Ressourcen in der Regel effizienter initialisieren, indem Sie einen Zeiger auf die Anfangsdaten im pInitialData-Parameter übergeben (z. B. in einem Aufruf der ID3D11Device::CreateTexture2D-Methode ).

Multithreading