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:
- Procedura: Creare un buffer vertex
- Procedura: Creare un buffer di indice
- Procedura: Creare un buffer costante
- Procedura: Inizializzare una trama da un file
Considerazioni sul multithreading
La quantità di concorrenza della creazione e del rendering delle risorse che l'applicazione può ottenere dipende dal livello di supporto multithreading implementato dal driver. Se il driver supporta la creazione simultanea, l'applicazione deve avere problemi di concorrenza molto inferiori. 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, eseguire una query sul driver per il valore del membro DriverConcurrentCreates della struttura D3D11_FEATURE_DATA_THREADING . Per altre informazioni sul controllo del supporto driver di multithreading, vedere Procedura: Verificare il supporto driver.
Le operazioni simultanee non comportano necessariamente prestazioni migliori. Ad esempio, la creazione e il caricamento di una trama sono in genere limitate dalla larghezza di banda di memoria. Il tentativo di creare e caricare più trame potrebbe non essere più veloce di eseguire una trama alla volta, anche se questo lascia inattive più core CPU. Tuttavia, la creazione di più shader usando più thread può aumentare le prestazioni perché questa operazione è meno dipendente 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 .
Argomenti correlati