Tipos de dispositivo (Direct3D 9)

Dispositivo HAL

El tipo de dispositivo principal es el dispositivo hal, que admite la rasterización acelerada por hardware y el procesamiento de vértices de hardware y software. Si el equipo en el que se ejecuta la aplicación está equipado con un adaptador de pantalla que admita Direct3D, la aplicación debe usarla para las operaciones de Direct3D. Los dispositivos hal de Direct3D implementan todos o parte de los módulos de transformación, iluminación y rasterización en hardware.

Las aplicaciones no acceden directamente a adaptadores de gráficos. Llaman a métodos y funciones de Direct3D. Direct3D accede al hardware a través de hal. Si el equipo en el que se ejecuta la aplicación es compatible con hal, obtendrá el mejor rendimiento mediante un dispositivo hal.

Para crear un dispositivo hal, llame a CreateDevice mediante D3DDEVTYPE_HAL como tipo de dispositivo.

Dispositivo de referencia

Direct3D admite un tipo de dispositivo adicional denominado dispositivo de referencia o rasterizador de referencia. A diferencia de un dispositivo de software, el rasterizador de referencia admite todas las características de Direct3D. Este dispositivo está pensado para usarse con fines de depuración y, por tanto, solo está disponible en las máquinas en las que se ha instalado el SDK de DirectX. Dado que estas características se implementan para la precisión en lugar de la velocidad y se implementan en el software, los resultados no son muy rápidos. El rasterizador de referencia hace uso de instrucciones especiales de CPU siempre que pueda, pero no está pensado para aplicaciones comerciales. Use el rasterizador de referencia solo con fines de prueba de características o demostración. Para crear un dispositivo de referencia, llame al método CreateDevice mediante D3DDEVTYPE_REF como tipo de dispositivo.

Dispositivos HAL frente a REF

Los dispositivos HAL (Capa de abstracción de hardware) y los dispositivos REF (rasterizador reference) son los dos tipos principales de dispositivo Direct3D; el primero se basa en torno al soporte de hardware, y es muy rápido, pero podría no admitir todo; mientras que el segundo no usa ninguna aceleración de hardware, por lo que es muy lento, pero se garantiza que admite todo el conjunto de características de Direct3D, de la manera correcta. En general, solo necesitará usar dispositivos HAL, pero si usa alguna característica avanzada que la tarjeta gráfica no admite, es posible que tenga que revertir a REF.

La otra vez que quiera usar REF es si el dispositivo HAL está generando resultados extraños; es decir, está seguro de que el código es correcto, pero el resultado no es lo que espera. Se garantiza que el dispositivo REF se comporte correctamente, por lo que es posible que desee probar la aplicación en el dispositivo REF y ver si el comportamiento extraño continúa. Si no es así, significa que (a) la aplicación asume que la tarjeta gráfica admite algo que no lo hace o (b) es un error de controlador. Si todavía no funciona con el dispositivo REF, se trata de un error de aplicación.

Procesamiento de vértices de hardware frente a software

El procesamiento de vértices de hardware frente a software solo se aplica realmente a los dispositivos HAL. Al insertar vértices a través de la canalización, deben transformarse (por el mundo, la vista y las matrices de proyección a su vez) y encenderse (por las luces integradas de D3D), esta fase de procesamiento se conoce como T&L (para & la iluminación de transformación). El procesamiento de vértices de hardware significa que esto se realiza en hardware, si el hardware lo admite; ergo, el procesamiento de vértices de software se realiza mediante software. La práctica general consiste en intentar crear primero un dispositivo hardware T&L y, si se produce un error en el intento mixto, y si se produce un error en probar software. (Si se produce un error en el software, abandone y salga con un error).

Dispositivos Direct3D