Condividi tramite


Tipi di dispositivo (Direct3D 9)

Dispositivo HAL

Il tipo di dispositivo primario è il dispositivo hal, che supporta la rasterizzazione accelerata hardware e l'elaborazione dei vertici hardware e software. Se il computer in cui è in esecuzione l'applicazione è dotato di una scheda di visualizzazione che supporta Direct3D, l'applicazione deve usarla per le operazioni Direct3D. I dispositivi Direct3D hal implementano tutti i moduli di trasformazione, illuminazione e rasterizzazione nell'hardware.

Le applicazioni non accedono direttamente alle schede grafiche. Chiamano funzioni e metodi Direct3D. Direct3D accede all'hardware tramite l'hal. Se il computer su cui è in esecuzione l'applicazione supporta l'hal, otterrà le migliori prestazioni usando un dispositivo hal.

Per creare un dispositivo hal, chiama CreateDevice usando D3DDEVTYPE_HAL come tipo di dispositivo.

Dispositivo di riferimento

Direct3D supporta un tipo di dispositivo aggiuntivo denominato dispositivo di riferimento o rasterizzatore di riferimento. A differenza di un dispositivo software, il rasterizzatore di riferimento supporta ogni funzionalità Direct3D. Questo dispositivo deve essere usato a scopo di debug ed è quindi disponibile solo nei computer in cui è stato installato DirectX SDK. Poiché queste funzionalità vengono implementate per l'accuratezza piuttosto che per la velocità e vengono implementate nel software, i risultati non sono molto veloci. Il rasterizzatore di riferimento usa istruzioni speciali della CPU ogni volta che può, ma non è destinato alle applicazioni di vendita al dettaglio. Usare il rasterizzatore di riferimento solo a scopo dimostrativo o di test di funzionalità. Per creare un dispositivo di riferimento, chiamare il metodo CreateDevice usando D3DDEVTYPE_REF come tipo di dispositivo.

HAL e REF Devices

I dispositivi HAL (Hardware Abstraction Layer) e REF (rasterizer REFerence) sono i due tipi principali di dispositivo Direct3D; il primo è basato sul supporto hardware, ed è molto veloce ma potrebbe non supportare tutto; mentre il secondo non usa alcuna accelerazione hardware, quindi è molto lento, ma è garantito di supportare l'intero set di funzionalità Direct3D, nel modo corretto. In generale, dovrai usare solo dispositivi HAL, ma se usi alcune funzionalità avanzate che la scheda grafica non supporta, potrebbe essere necessario eseguire il fallback a REF.

L'altra volta che si potrebbe voler usare REF è se il dispositivo HAL produce risultati strani, ovvero si è certi che il codice sia corretto, ma il risultato non è quello previsto. Il comportamento del dispositivo REF è garantito in modo corretto, quindi è possibile testare l'applicazione nel dispositivo REF e verificare se il comportamento strano continua. In caso contrario, significa che l'applicazione (a) presuppone che la scheda grafica supporti qualcosa che non lo fa o (b) si tratta di un bug del driver. Se non funziona ancora con il dispositivo REF, si tratta di un bug dell'applicazione.

Elaborazione dei vertici hardware e software

L'elaborazione dei vertici hardware e software si applica solo ai dispositivi HAL. Quando si esegue il push dei vertici attraverso la pipeline, è necessario trasformarli (dal mondo, dalla visualizzazione e dalle matrici di proiezione a sua volta) e illuminati (dalle luci predefinite di D3D). Questa fase di elaborazione è nota come T&L (per Transformation & Lighting). L'elaborazione dei vertici hardware significa che questa operazione viene eseguita nell'hardware, se l'hardware lo supporta; ergo, l'elaborazione dei vertici software viene eseguita è software. La procedura generale consiste nel provare prima a creare un dispositivo T&L hardware e, se il tentativo non riesce, e se l'operazione non riesce prova software. Se il software non riesce, rinunciare e uscire con un errore.

Dispositivi Direct3D