Tipos de dispositivo (Direct3D 9)
Dispositivo HAL
O tipo de dispositivo principal é o dispositivo hal, que dá suporte à rasterização acelerada por hardware e ao processamento de vértice de hardware e software. Se o computador no qual seu aplicativo está sendo executado é equipado com um adaptador de vídeo compatível com o Direct3D, seu aplicativo deve usá-lo para as operações do Direct3D. Os dispositivos hal com Direct3D implementam todos ou parte dos módulos de rasterização, iluminação e transformação no hardware.
Os aplicativos não acessam os adaptadores gráficos diretamente. Eles chamam métodos e funções do Direct3D. O Direct3D acessa o hardware por meio do hal. Se o computador que seu aplicativo está sendo executado oferece suporte a hal, ele obterá o melhor desempenho usando um dispositivo hal.
Para criar um dispositivo hal, chame CreateDevice usando D3DDEVTYPE_HAL como o tipo de dispositivo.
Dispositivo de referência
O Direct3D dá suporte a um tipo de dispositivo adicional chamado um rasterizador de referência ou dispositivo de referência. Ao contrário de um dispositivo de software, o rasterizador de referência dá suporte a todos os recursos do Direct3D. Este 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 tiver sido 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 ele não foi desenvolvido para aplicativos de varejo. Use o rasterizador de referência apenas para fins de teste ou demonstração do recurso. Para criar um dispositivo de referência, chame o método CreateDevice usando D3DDEVTYPE_REF como o tipo de dispositivo.
Dispositivos HAL vs. REF
Os dispositivos HAL (camada de abstração de Hardware) e REF (rasterizador de referência) são os dois tipos principais de dispositivo Direct3D; o primeiro baseia-se no suporte de hardware e é muito rápido, mas talvez não dê suporte a tudo; enquanto o segundo usa a aceleração de hardware, portanto é 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 você estiver usando algum recurso avançado que não dá suporte à placa gráfica, então talvez seja necessário voltar ao REF.
Uma outra ocasião onde convém usar o REF é se o dispositivo HAL estiver produzindo resultados estranhos, ou seja, você tem certeza que seu código está correto, mas o resultado não é o que você espera. É garantido que o dispositivo REF irá se comportar corretamente, portanto, convém testar seu aplicativo no dispositivo REF e ver se o comportamento estranho continua. Se isso não acontecer, isso significa que o seu aplicativo está pressupondo que a placa gráfica oferece suporte há algo não suportado por ela, ou (b) é um bug de driver. Se ainda não funcionar com o dispositivo REF, trata-se de um bug de aplicativo.
Processamento de vértice de software versus hardware
O processamento de vértice de hardware versus software se aplica somente aos dispositivos HAL. Quando você envia vértices por push pelo pipeline, eles precisam ser transformados (pelo mundo, matrizes de exibição e projeção por sua vez) e acesos (pelas luzes internas da D3D) – esse estágio de processamento é conhecido como T&L (para Iluminação de Transformação & ). O processamento de vértice de hardware significa que isso é feito no hardware, se o hardware oferecer suporte a ele; logo, o processamento de vértice de software é feito no software. A prática geral é tentar criar um dispositivo T&L de hardware primeiro e, se isso falhar, tente Mixed e, se isso falhar, tente Software. (Se o software falhar, desista e saia com um erro).
Tópicos relacionados