Direct3D

Direct3D es parte de DirectX (conjunto de bibliotecas para multimedia), propiedad de Microsoft. Consiste en una API para la programación de gráficos 3D. Está disponible tanto en los sistemas Windows de 32 y 64 bits, como para sus consolas Xbox y Xbox 360.

El objetivo de esta API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas, polígonos y texturas, en cualquier aplicación que despliegue gráficos en 3D, así como efectuar de forma transparente transformaciones geométricas sobre dichas entidades. Direct3D provee también una interfaz transparente con el hardware de aceleración gráfica.

Se usa principalmente en aplicaciones donde el rendimiento es fundamental, como los videojuegos, aprovechando el hardware de aceleración gráfica disponible en la tarjeta gráfica.

El principal competidor de Direct3D es OpenGL, desarrollado por Silicon Graphics Inc.

Arquitectura

Capa de Abstracción.

Direct3D es uno de los múltiples componentes que contiene la API DirectX de Windows. Se le podría situar al nivel del GDI de Windows, presentando un nivel de abstracción entre una aplicación de gráficos 3D y los drivers de la tarjeta gráfica (véase gráfico adjunto). Con arquitectura basada en el COM de Microsoft, la mayor ventaja que presenta Direct3D frente al GDI es que Direct3D se comunica directamente con los drivers de pantalla, consiguiendo mejores resultados en la representación de los gráficos por pantalla que aquel.

Direct3D está compuesto por dos grandes APIs. El modo retenido y el modo inmediato. El modo inmediato da soporte a todas las primitivas de procesamiento 3D que permiten las tarjetas gráficas (luces, materiales, transformaciones, control de profundidad, etc). El modo retenido, construido sobre el anterior, presenta una abstracción de nivel superior ofreciendo funcionalidades preconstruidas de gráficos como jerarquías o animaciones. El modo retenido ofrece muy poca libertad a los desarrolladores, siendo el modo inmediato el que más se usa.

El modo inmediato de Direct3D trabaja fundamentalmente con los llamados dispositivos (devices). Son los encargados de realizar la renderización de la escena. El dispositivo ofrece una interfaz que permite diferentes opciones de renderización. Por ejemplo un dispositivo mono permite la renderización en blanco y negro mientras que un dispositivo RGB permite el uso de colores. Podemos clasificar los dispositivos en tres clases principales:

  • Dispositivo HAL (hardware abstract layer): permite aceleración hardware. Se trata del dispositivo más rápido.
Dispositivo.
  • Dispositivo de referencia: es necesaria la instalación previa del SDK de Direct3D para poder usar este tipo de dispositivo. Permite la simulación software de un tipo de renderización y resulta muy útil cuando el hardware todavía no tiene incorporadas nuevas características de renderización. Un caso muy concreto del dispositivo de referencia es el Null reference device cuya función es presentar la pantalla en negro. Se usa por defecto cuando se intenta usar un dispositivo de referencia y no se encuentra el SDK.
  • Dispositivos de conexión software (pluggable software device): permite opciones de rasterización software. Previamente se ha tenido que obtener el dispositivo mediante el método RegisterSoftwareDevice. Este tipo de dispositivos no fueron usados hasta DirectX 9.0.[1]

Cada dispositivo tiene asociada una o más cadenas de intercambio (swap chains). Dichas cadenas están compuestas por varios buffers de superficies, considerando a una superficie como un conjunto de píxeles más todos los atributos asociados a cada uno de ellos como la profundidad, el color, la transparencia (canal alfa), etc.

Además, los dispositivos tienen asociados también una colección de recursos (resources) o datos concretos necesarios para realizar la renderización. Cada uno de estos recursos tiene los siguientes atributos:

  • Tipo (type): define el tipo de recurso del que se trata: superficie, volumen, textura, textura de cubo, textura de volumen, textura de superficie, buffer de vértices o buffer de índices.
  • Almacén (pool):[2] describe dónde se almacena el recurso durante la ejecución. Default indica que se almacena junto con el dispositivo; managed que se guarda en la memoria del sistema y se copia en el dispositivo cuando éste lo necesita; system memory que se encuentra exclusivamente en la memoria del sistema, al igual que scratch, ignorando este último las restricciones de la tarjeta gráfica.
  • Formato (format): describe el formato en que se almacena el recurso en memoria. La información más importante es respecto al almacenamiento de los píxeles en memoria. Un ejemplo de valor de format es D3DFMT_R8G8B8 que indica que una profundidad de color de 24 bits (los 8 de más peso para el rojo, los 8 de en medio para el verde y los 8 de menos peso para el azul).
  • Uso (usage): mediante una lista de flags, indica cómo se va a usar el recurso. También permite distinguir los recursos estáticos, aquellos que una vez cargados solo interesa su valor, de los recursos dinámicos, cuyo valor se modifica repetidamente.
Other Languages
العربية: دايركت ثري دي
čeština: Direct3D
Deutsch: Direct3D
English: Direct3D
euskara: Direct3D
français: Direct3D
italiano: Direct3D
日本語: Direct3D
한국어: Direct3D
Nederlands: Direct3D
polski: Direct3D
português: Direct3D
русский: Direct3D 10
slovenčina: Direct3D
српски / srpski: Direct3D
Türkçe: Direct3D
українська: Direct3D 10
中文: Direct3D