Articulo de referencia

D3DX

En informática , D3DX (Direct3D Extension) es una biblioteca API de alto nivel diseñada para complementar la API gráfica Direct3D de Microsoft . La biblioteca D3DX se introdujo ...

En informática , D3DX (Direct3D Extension) es una biblioteca API de alto nivel diseñada para complementar la API gráfica Direct3D de Microsoft . La biblioteca D3DX se introdujo en Direct3D 7 y posteriormente se mejoró en Direct3D 9. Proporciona clases para cálculos comunes sobre vectores, matrices y colores, cálculo de matrices de proyección y de vista, interpolaciones de splines y varias tareas más complejas, como compilar o ensamblar sombreadores utilizados para programación gráfica 3D, almacenamiento comprimido de animación esquelética y pilas de matrices. Existen varias funciones que proporcionan operaciones complejas sobre mallas 3D, como el cálculo del espacio tangente, la simplificación de mallas, la transferencia de radiancia precalculada, la optimización para la compatibilidad con la caché de vértices y la reordenación de franjas, y generadores para mallas de texto 3D. Las características 2D incluyen clases para dibujar líneas en el espacio de la pantalla, texto y sistemas de partículas basados ​​en sprites . Las funciones espaciales incluyen varias rutinas de intersección, conversión desde/hacia coordenadas baricéntricas y generadores de cajas delimitadoras y esferas.

La biblioteca D3DX contiene rutinas preescritas para realizar tareas comunes en la mayoría de las aplicaciones 2D/3D, como los videojuegos. Dado que la API Direct3D es de bajo nivel, usar la biblioteca D3DX suele ser mucho más sencillo.

En 2012, Microsoft anunció que D3DX 9, D3DX 10 y D3DX 11 quedarían obsoletos en el SDK de Windows 8 , [ 1 ] junto con otros marcos de desarrollo como XNA . Los efectos de sombreado, la gestión de texturas, las optimizaciones de geometría y los modelos de malla están disponibles como fuentes separadas publicadas a través de GitHub . [ 2 ] Las construcciones matemáticas de D3DX, como vectores y matrices , se consolidarían con XNAMath en DirectXMath [ 3 ] y las matemáticas de armónicos esféricos se proporcionan como fuente separada. [ 2 ]

Interfaces

La biblioteca D3DX sigue el modelo de programación orientada a objetos COM . Se accede a la funcionalidad mediante interfaces similares a las de C++ .

Efecto ID3DX

La interfaz ID3DXEffect se utiliza para compilar y enlazar sombreadores FX ( .fx ). Admite la asignación automática de parámetros de sombreador con nombre a registros constantes de hardware, grupos de parámetros, asignación de texturas a muestreadores disponibles, especificación de "técnicas" y modificación de estados de renderizado. Los archivos de efectos FX eran descripciones de texto del estado de Direct3D que agrupaban el estado de renderizado, el estado de textura, los sombreadores y los parámetros en una o más técnicas; cada técnica podía contener uno o más pases, lo que permitía a una aplicación elegir la implementación más adecuada para el hardware de destino en tiempo de ejecución. [ 4 ] [ 5 ]

ID3DXFont

La interfaz ID3DXFont permite dibujar texto en 2D. Véase también D3DXCreateText, que crea mallas 3D de texto.

Línea ID3D

La interfaz ID3DXLine se puede utilizar para dibujar líneas suavizadas en el espacio de la pantalla con un patrón específico.

ID3DXMesh

La interfaz ID3DXMesh se utiliza para almacenar mallas y optimizarlas para mejorar la caché de vértices y reordenar las franjas. Algunas funciones de D3DX operan sobre esta interfaz. Un ejemplo es D3DXComputeTangentFrame, que crea un marco en el espacio tangente para efectos como el mapeo de normales y de paralaje. Una clase derivada de esta es ID3DXPMesh, que permite simplificar la geometría.

Motor ID3DXPRTE

Se utiliza para la transferencia de radiancia precalculada , una técnica similar a la iluminación de armónicos esféricos que se utiliza para la iluminación global precalculada y la iluminación ambiental suave. [ 6 ] Sus métodos se utilizaban normalmente fuera de línea para precalcular vectores de transferencia por vértice o por texel, y Microsoft señaló posteriormente que el simulador PRT seguía estando disponible solo en la versión anterior de D3DX9. [ 7 ] [ 2 ]

ID3DXSprite

La interfaz ID3DXSprite es una clase de C++ que se utiliza para dibujar una imagen 2D en la pantalla, conocida como sprite en gráficos por computadora . En DirectX 7, esto se hacía normalmente mediante la API DirectDraw , que está obsoleta.

Normalmente, el programador solo necesita llamar al método Begin() del objeto ID3DXSprite para configurar el estado de renderizado y la transformación del mundo para el dibujo en 2D, llamar al método Draw() para agregar texturas a la lista que se va a dibujar y, finalmente, llamar al método End() para dibujar las imágenes en la pantalla y restaurar el estado gráfico original.

Una crítica común al D3DXSprite era su lentitud, pero este problema se ha solucionado a partir de Direct3D 9 .

Funciones

D3DXComputeTangentFrame

Calcula el marco de espacio tangente de una malla que se utiliza para efectos como mapeo de normales/relieve, mapeo de paralaje y modelos de iluminación anisotrópica. Gestiona los vértices en las discontinuidades del espacio tangente creando duplicados, resolviendo así el problema de la bola peluda . No maneja el enrollamiento UV invertido de las caras, por lo que los modelos con mapeo de texturas reflejado pueden presentar problemas de iluminación debido a esto.

Direct3D10

La biblioteca de utilidades D3DX10 para Direct3D 10 era similar a D3DX para Direct3D 9 en funcionalidad e incluía la misma biblioteca D3DXMath y los códecs de software de compresión de bloques (BC1-BC5). Las principales diferencias radicaban en que Effects para Direct3D 10 se convirtió en un componente del sistema operativo, el compilador HLSL se trasladó a una DLL D3DCompile independiente y el código de carga y guardado de imágenes de textura utilizaba el Componente de imágenes de Windows ( WIC). Como consecuencia del cambio al uso de WIC, D3DX10 no era compatible con los formatos de imagen Truevision TGA , RGBE ni Portable PixMap , que sí eran compatibles con D3DX. D3DX10 tampoco incluía las API de atlas de texturas de isochart UVAtlas ni de transferencia de radiancia precalculada .

Todas las versiones de D3DX10 están obsoletas según la documentación de Microsoft. [ 3 ]

Direct3D11

La biblioteca de utilidades D3DX11 para Direct3D 11 era una versión reducida de D3DX10. Incluía código para cargar y guardar imágenes de textura mediante WIC y los códecs de software de compresión de bloques (BC1-BC7), pero poco más.

Todas las versiones de D3DX11 están obsoletas según la documentación de Microsoft. [ 3 ]

La mayor parte de la funcionalidad de D3DX9, D3DX10 y D3DX11 se ha trasladado a proyectos de código abierto para Direct3D 11 o posterior: DirectXMath, [ 8 ] DirectX Tool Kit, [ 9 ] DirectXTex, [ 10 ] DirectXMesh, [ 11 ] y UVAtlas. [ 12 ] También hay versiones de código abierto de DXUT [ 13 ] y del entorno de ejecución de Effects (FX11) [ 14 ] disponibles. A diferencia de Effects 10, FX11 se distribuyó como código fuente en lugar de en una DLL, y Microsoft lo describió como una ayuda para la portabilidad del código FX9/FX10 más antiguo. [ 15 ] [ 14 ]

Direct3D12

No existe una biblioteca de utilidades D3DX12 basada en DLL. Sin embargo, existe un archivo de cabecera de utilidades D3DX12 (con código C++ en línea) para algunas funciones básicas de Direct3D 12, documentado en Microsoft Docs [ 16 ] y publicado en GitHub [ 17 ] . No incluye funcionalidades como operaciones matemáticas, sprites, renderizado de fuentes, formas 3D, mallas o carga de texturas. Existe un kit de herramientas DirectX para Direct3D 12 [ 18 ] que proporciona la funcionalidad faltante.

Referencias

  1. "Funciones D3DX (Gráficos Direct3D 11)" . Microsoft. 18 de agosto de 2023.
  2. 1 2 3 "Vivir sin D3DX" . MSDN. 20 de agosto de 2013.
  3. 1 2 3 Microsoft. "¿Dónde está el SDK de DirectX?" . Microsoft . Consultado el 28 de junio de 2020 .
  4. "Capítulo 31. Uso de FX Composer" . NVIDIA Developer / GPU Gems.
  5. "Efectos D3DX y el formato de archivo FX" (PDF) . NVIDIA.
  6. "Interfaz ID3DXPRTEngine (D3DX9Mesh.h) - Aplicaciones Win32" . Microsoft Learn.
  7. "Interfaz ID3DXPRTEngine (D3DX9Mesh.h) - Aplicaciones Win32" . Microsoft Learn.
  8. "DirectXMath" . GitHub. 17 de febrero de 2022.
  9. "Kit de herramientas DirectX para DX11" . GitHub. 18 de febrero de 2022.
  10. "Biblioteca de procesamiento de texturas DirectXTex" . GitHub. 16 de febrero de 2022.
  11. "Biblioteca de procesamiento de geometría DirectXMesh" . GitHub. 18 de febrero de 2022.
  12. "Biblioteca de atlas de texturas isochart UVAtlas" . GitHub. 15 de febrero de 2022.
  13. "DXUT para Direct3D 11" . GitHub. 12 de febrero de 2022.
  14. 1 2 "Efectos para Direct3D 11" . GitHub. 12 de febrero de 2022.
  15. "Diferencias entre Efectos 10 y Efectos 11" . Microsoft Learn.
  16. Microsoft. "Estructuras y funciones auxiliares para D3D12" . Microsoft . Consultado el 28 de junio de 2020 .
  17. "D3DX12" . GitHub.
  18. "Kit de herramientas DirectX para DX12" . GitHub. 18 de febrero de 2022.
  • Documentación de D3DX en Microsoft Docs
  • Documentación de D3DX10 en Microsoft Docs
  • Documentación de D3DX11 en Microsoft Docs
  • Vivir sin D3DX (anteriormente Blogs de MSDN)
Obtenido de " https://en.wikipedia.org/w/index.php?title=D3DX&oldid=1358316747 "