Partilhar via


Tipos de dispositivo (Direct3D 9)

Dispositivo HAL

O principal tipo de dispositivo é o dispositivo hal, que suporta rasterização acelerada por hardware e processamento de vértice de hardware e software. Se o computador no qual o aplicativo está sendo executado estiver equipado com um adaptador de vídeo que suporte Direct3D, seu aplicativo deverá usá-lo para operações Direct3D. Os dispositivos hal Direct3D implementam toda 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 Direct3D. O Direct3D acede ao hardware através do hal. Se o computador em que seu aplicativo está sendo executado suportar o 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 suporta um tipo de dispositivo adicional chamado dispositivo de referência ou rasterizador de referência. Ao contrário de um dispositivo de software, o rasterizador de referência suporta todos os recursos Direct3D. Este dispositivo destina-se a ser usado para fins de depuração e, portanto, só está disponível em máquinas onde o SDK do DirectX foi instalado. Como esses recursos são implementados para precisão em vez de velocidade e são implementados em 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 pode, mas não se destina a aplicações de varejo. Use o rasterizador de referência apenas para fins de teste ou demonstração de recursos. Para criar um dispositivo de referência, chame método CreateDevice usando D3DDEVTYPE_REF como o tipo de dispositivo.

Dispositivos HAL vs. REF

Os dispositivos HAL (Hardware Abstraction Layer) e REF (REFerence rasterizer) são os dois principais tipos de dispositivo Direct3D; O primeiro é baseado no suporte de hardware, e é muito rápido, mas pode não suportar tudo; enquanto o segundo não usa aceleração de hardware, por isso é muito lento, mas é garantido para suportar todo o conjunto de recursos Direct3D, da maneira correta. Em geral, você só precisará usar dispositivos HAL, mas se você estiver usando algum recurso avançado que sua placa gráfica não suporta, talvez seja necessário voltar para REF.

A outra vez que você pode querer usar REF é se o dispositivo HAL está produzindo resultados estranhos - ou seja, você tem certeza de que seu código está correto, mas o resultado não é o que você está esperando. O dispositivo REF é garantido para se comportar corretamente, então você pode querer testar sua aplicação no dispositivo REF e ver se o comportamento estranho continua. Se isso não acontecer, isso significa que (a) seu aplicativo está assumindo que a placa gráfica suporta algo que não suporta, ou (b) é um bug de driver. Se ainda não funcionar com o dispositivo REF, então é um bug do aplicativo.

Processamento Vertex de Hardware vs. Software

O processamento de vértice de hardware versus software só se aplica realmente a dispositivos HAL. Quando você empurra vértices através da tubulação, eles precisam ser transformados (pelo mundo, visão e matrizes de projeção, por sua vez) e iluminados (pelas luzes embutidas do D3D) - esse estágio de processamento é conhecido como T&L (para Transformação & Iluminação). Processamento de vértice de hardware significa que isso é feito em hardware, se o hardware suportar; ergo, Software vertex processamento é feito é software. A prática geral é tentar criar um dispositivo T&L de hardware primeiro e, se isso falhar, tente Misto e, se isso falhar, tente Software. (Se o software falhar, desista e saia com um erro).

dispositivos Direct3D