Condividi tramite


Creazione di oggetti con multithreading

Usare l'interfaccia ID3D11Device per creare risorse e oggetti, usare ID3D11DeviceContext per il rendering .

Ecco alcuni esempi di come creare risorse:

Considerazioni sul multithreading

Il livello di concorrenza nella creazione e nel rendering delle risorse che l'applicazione può raggiungere dipende dal livello di supporto multithread implementato dal driver. Se il driver supporta la creazione simultanea, l'applicazione deve avere problemi di concorrenza molto meno. Tuttavia, se il driver non supporta la creazione di oggetti simultanei, la quantità di concorrenza è estremamente limitata. Per comprendere la quantità di supporto disponibile in un driver, interroga il driver per ottenere il valore del membro DriverConcurrentCreates della struttura D3D11_FEATURE_DATA_THREADING. Per altre informazioni su come controllare il supporto del driver per il multithreading, vedere Procedura: Controllare il supporto del driver.

Le operazioni simultanee non comportano necessariamente prestazioni migliori. Ad esempio, la creazione e il caricamento di una trama è in genere limitata dalla larghezza di banda di memoria. Tentare di creare e caricare più texture potrebbe non essere più veloce rispetto a gestire una texture alla volta, anche se ciò lascia inattivi più core della CPU. Tuttavia, la creazione di più shader che usano più thread può migliorare le prestazioni perché questa operazione dipende meno dalle risorse di sistema, ad esempio la larghezza di banda della memoria.

Quando il driver e l'hardware grafico supportano il multithreading, in genere è possibile inizializzare le risorse appena create in modo più efficiente passando un puntatore ai dati iniziali nel parametro pInitialData (ad esempio, in una chiamata al metodo ID3D11Device::CreateTexture2D).

Multithreading