Tipos de dispositivos

Os tipos de dispositivos Direct3D incluem dispositivos hal (Camada de Abstração de Hardware) e o rasterizador de referência.

Dispositivo HAL

O tipo de dispositivo primário é o dispositivo hal, compatível com rasterização acelerada por hardware e com processamento de vértice de hardware e software. Se o computador no qual o aplicativo está sendo executado é equipado com um adaptador de vídeo compatível com Direct3D, seu aplicativo deve usá-lo para operações do Direct3D. Os dispositivos hal com Direct3D implementam todos ou parte dos módulos de transformação, iluminação e rasterização no hardware.

Os aplicativos não acessam adaptadores gráficos diretamente. Eles chamam funções e métodos do Direct3D. O Direct3D acessa o hardware por meio do hal. Se o computador em que seu aplicativo está sendo executado oferecer suporte a hal, ele obterá o melhor desempenho usando um dispositivo hal.

Dispositivo de referência

O Direct3D oferece suporte a um tipo de dispositivo adicional denominado dispositivo de referência ou rasterizador de referência. Ao contrário de um dispositivo de software, o rasterizador de referência oferece suporte a todos os recursos do Direct3D. Esse dispositivo se destina a ser usado para fins de depuração e, portanto, só está disponível em computadores em que o SDK do DirectX foi instalado. Como esses recursos são implementados para precisão em vez de velocidade e são implementados no software, os resultados não são muito rápidos. O rasterizador de referência faz uso de instruções especiais da CPU sempre que possível, mas não foi desenvolvido para aplicativos de varejo. Use o rasterizador de referência apenas para fins de teste ou demonstração de recursos.

Dispositivos HAL vs. REF

Os dispositivos HAL (camada de abstração de Hardware) e REF (rasterizador de referência) são os dois principais tipos de dispositivo Direct3D; o primeiro se baseia no suporte de hardware e é muito rápido, mas talvez não dê suporte a tudo, enquanto o segundo usa aceleração de hardware e, por isso, é muito lento, mas garante suporte a todo o conjunto de recursos do Direct3D da forma correta. Em geral, você só precisará usar dispositivos HAL, mas se estiver usando algum recurso avançado incompatível com a placa gráfica, talvez seja necessário voltar para o REF.

A outra ocasião em que é conveniente usar o REF é quando o dispositivo HAL está produzindo resultados estranhos, ou seja, você tem certeza que o código está correto, mas o resultado não é o que você espera. É garantido que o dispositivo REF se comportará corretamente. Portanto, convém testar o aplicativo no dispositivo REF e ver se o comportamento estranho continua. Se isso não acontecer, significará que (a) o aplicativo está pressupondo que a placa gráfica oferece suporte a algo não suportado por ela ou (b) é um bug de driver. Se ele ainda não funcionar com o dispositivo REF, então trata-se de um bug de aplicativo.

Processamento de vértices de hardware versus de software

O processamento de vértices de hardware versus de software só se aplica, na realidade, a dispositivos HAL. Quando você envia vértices por push pelo pipeline, eles precisam ser transformados (pelas matrizes de mundo, exibição e projeção, sucessivamente) e iluminados (pelas luzes internas do D3D). Esse estágio de processamento é conhecido como T&L (Transformação e Iluminação). Processamento de vértice de hardware significa que ele é feito em hardware, se o hardware é compatível; por conseguinte, processamento de vértices de software é feito em software. A prática geral é tentar criar um dispositivo de Hardware T&L primeiro e, se falhar tentar Misto e, se falhar, tentar Software. (Se software falhar, desista e saia com um erro.)

Dispositivos