Dispositivi Direct3D (Direct3D 9)

Un dispositivo Direct3D è il componente di rendering di Direct3D. Incapsula e archivia lo stato di rendering. Inoltre, un dispositivo Direct3D esegue trasformazioni e operazioni di illuminazione e rasterizza un'immagine in una superficie.

I dispositivi Direct3D contengono un modulo di trasformazione, un modulo di illuminazione e un modulo di rasterizzazione, come illustrato nel diagramma seguente.

diagramma dell'architettura del dispositivo direct3d

Direct3D supporta attualmente due tipi principali di dispositivi Direct3D:

  • Dispositivo hal con rasterizzazione accelerata hardware e ombreggiatura con elaborazione del vertice hardware e software
  • Un dispositivo di riferimento

È possibile pensare a questi dispositivi come due driver separati. I dispositivi software e di riferimento sono rappresentati dai driver software e il dispositivo hal è rappresentato da un driver hardware. Il modo più comune per sfruttare questi dispositivi consiste nell'usare il dispositivo hal per le applicazioni di spedizione e il dispositivo di riferimento per i test delle funzionalità. Questi vengono forniti da terze parti per emulare dispositivi specifici, ad esempio hardware di sviluppo che non è ancora stato rilasciato.

Il dispositivo Direct3D creato da un'applicazione deve corrispondere alle funzionalità dell'hardware in cui è in esecuzione l'applicazione. Direct3D offre funzionalità di rendering, accedendo all'hardware 3D installato nel computer o simulando le funzionalità dell'hardware 3D nel software. Di conseguenza, Direct3D fornisce dispositivi sia per l'accesso hardware che per l'emulazione software.

I dispositivi con accelerazione hardware offrono prestazioni molto migliori rispetto ai dispositivi software. Il tipo di dispositivo hal è disponibile in tutte le schede grafiche supportate da Direct3D. Nella maggior parte dei casi, le applicazioni destinazione computer con accelerazione hardware e si basano sull'emulazione software per ospitare computer di livello inferiore.

Ad eccezione del dispositivo di riferimento, i dispositivi software non supportano sempre le stesse funzionalità di un dispositivo hardware. Le applicazioni devono sempre eseguire query per le funzionalità del dispositivo per determinare quali funzionalità sono supportate.

Poiché il comportamento dei dispositivi software e di riferimento forniti con Direct3D 9 è identico a quello del dispositivo hal, il codice dell'applicazione creato per funzionare con il dispositivo hal funzionerà con il software o i dispositivi di riferimento senza modifiche. Si noti che, mentre il comportamento del software o del dispositivo di riferimento fornito è identico a quello del dispositivo hal, le funzionalità del dispositivo variano e un determinato dispositivo software può implementare un set molto più piccolo di funzionalità.

Comportamenti

Direct3D consente di specificare il comportamento di un dispositivo, nonché il tipo del dispositivo. Il metodo IDirect3D9::CreateDevice consente una combinazione di uno o più flag di comportamento per controllare i comportamenti globali del dispositivo Direct3D. Questi comportamenti specificano cosa è e non vengono mantenuti nella parte di runtime di Direct3D e i tipi di dispositivo specificano quali driver usare. Anche se alcune combinazioni di comportamenti del dispositivo non sono valide, è possibile usare tutti i comportamenti del dispositivo con tutti i tipi di dispositivo. Ad esempio, è valido specificare D3DDEVTYPE_SW in un dispositivo creato con D3DCREATE_PUREDEVICE.

Per iniziare