Tipi di dispositivo

I tipi di dispositivo Direct3D includono i dispositivi Hardware Abstraction Layer (hal) e il rasterizzatore di riferimento.

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 l'applicazione è in esecuzione dispone 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. Richiamano funzioni e metodi Direct3D. Direct3D accede all'hardware tramite l'hal. Se il computer su cui l'applicazione è in esecuzione supporta l'hal, otterrà le migliori prestazioni usando un dispositivo hal.

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à.

Dispositivi HAL e REF

I dispositivi HAL (Hardware Abstraction Layer) e REF (REFerence rasterizer) 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, sarà necessario usare solo dispositivi HAL, ma se si usano alcune funzionalità avanzate che la scheda grafica non supporta, potrebbe essere necessario eseguire il fallback a REF.

Un altro momento in cui 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 supporta 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 (dalle matrici del mondo, della vista e della proiezione) e illuminarli (dalle luci predefinite di D3D). Questa fase di elaborazione è nota come T&L (per Transformation & Lighting). L'elaborazione dei vertici hardware implicano che questa operazione viene eseguita nell'hardware, se l'hardware lo supporta; ergo, l'elaborazione dei vertici software viene eseguita nel software. La procedura generale consiste nel provare prima a creare un dispositivo T&L hardware; se il tentativo non riesce, provare con Mixed e se non funziona ancora, provare con Software. Se il software non riesce, abbandonare ed eseguire l'uscita con un errore.

Dispositivi