DirectX

DirectX

Información
Desarrollado por Microsoft
Última versión 12 (19 de mayo de 2019)
Sistema de explotación Microsoft Windows
Escribe Interfaz de programación
Licencia EULA
Documentación docs.microsoft.com/windows/win32/directx

Microsoft DirectX es una colección de bibliotecas destinadas a la programación de aplicaciones multimedia , más particularmente juegos o programas que involucran video , en plataformas Microsoft ( Xbox , sistemas operativos Windows ).

Las diferentes bibliotecas

Originalmente, el nombre de cada una de estas bibliotecas comenzaba con Direct, por ejemplo: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, etc. DirectX es el nombre genérico que se refiere a todas estas tecnologías. Con el tiempo, esta convención de nomenclatura ha caído en desuso, la X reemplazando a las tecnologías llamadas Xact, Xinput y que se han unido a la gran familia de tecnologías DirectX. Entonces, cuando Microsoft se embarcó en el desarrollo de una consola que hacía un uso intensivo de estas tecnologías, la X fue predominante, lo que pudo haber llevado al nombre Xbox (y posteriormente Xbox 360 , Xbox One y luego Xbox Series X y S ).

Direct3D (la biblioteca para 3D en tiempo real) se usa ampliamente en el desarrollo de juegos para la plataforma Microsoft Windows , para Xbox y Xbox 360 . Direct3D también se utiliza para otro tipo de aplicaciones que se basan en gráficos 3D de alta calidad para visualizar datos complejos, por ejemplo en el sector CAD / CAM aunque su competidor OpenGL está mejor establecido en este campo, ya que existe en muchas más plataformas. Direct3D es quizás una de las tecnologías DirectX más reconocidas, por lo que no es raro ver el nombre DirectX usado en lugar de Direct3D.

La multitud de componentes de DirectX se presenta en dos formas. Uno solo destinado a ejecutar aplicaciones desarrolladas con estas tecnologías ( componentes de tiempo de ejecución ), el otro es un kit de desarrollo para desarrolladores. Inicialmente los componentes destinados a la ejecución de las aplicaciones fueron redistribuidos con los juegos que los utilizaban, en las últimas versiones también se encuentran preinstalados con Windows. El SDK está disponible como descarga gratuita desde el sitio de desarrollo de Microsoft (MSDN) . La parte del tiempo de ejecución es propietaria y las fuentes no son accesibles. Las fuentes de los ejemplos de SDK están disponibles con este.

Windows Vista utilizó las versiones 9Ex y 10 de Direct3D . Estas dos versiones utilizaron características específicas del nuevo modelo de controlador de pantalla de Windows que apareció con Windows Vista. La nueva infraestructura gráfica de Windows admite la virtualización del hardware gráfico frente a múltiples aplicaciones y servicios, por ejemplo, Desktop Window Manager (el administrador de escritorio de Vista cuando Aero está activado). Anteriormente, con Windows XP , las aplicaciones tenían acceso exclusivo a la tarjeta gráfica y podían consumir sus recursos.

En PC, DirectX es actualmente la versión 12 en Windows 10 , la versión 11 para Windows 7 , para Windows Vista y Windows Server 2008 y 9.0c para todas las versiones anteriores de Windows .

Componentes

Los componentes que componen DirectX son:

Histórico

Hasta DirectX 9

En 1994 , Microsoft estaba a punto de lanzar su sistema operativo, Windows 95 . Uno de los factores determinantes para el éxito de cualquier sistema operativo (SO) sigue siendo la gama de software que permite ejecutar. Tres empleados de Microsoft, Craig Eisler, Alex St. John y Eric Engstrom , estaban bastante preocupados de que varios desarrolladores parecieran pensar que el sistema operativo anterior de Microsoft, MS-DOS , era una mejor plataforma para juegos, lo que podría significar que habría menos juegos. ser desarrollado para Windows 95 con el impacto negativo en el éxito de ese sistema operativo que podría implicar.

MS-DOS permitía el acceso directo a la tarjeta de video, teclado, mouse, tarjetas de sonido y otras partes del sistema, a diferencia de Windows 95, que introdujo nociones de espacio de direcciones específicas para cada proceso. Por lo tanto, Microsoft tuvo que proporcionar a los desarrolladores lo que querían; además, era necesario proporcionarlo rápidamente, ya que la fecha de lanzamiento del nuevo sistema operativo estaba a solo unos meses de distancia. Eisler, St. John y Engstrom se pusieron a trabajar en una solución a este problema que llamaron DirectX.

La primera versión de DirectX se lanzó al público en Septiembre de 1995bajo el nombre de Windows Games SDK. Este fue el reemplazo de DCI para Win32 y la API de WinG disponible para Windows 3.1 . Une équipe de développement d' ATI Technologies soumit à l'attention de Microsoft un certain nombre de technologies graphiques spécifiques au monde du jeu. Le développement de DirectX fut conduit par l'équipe de Eisler (chef développeur), St. John, et Engstrom (gestión de proyecto). En resumen, permitió que todas las versiones de Windows desde Windows 95 se beneficiaran de potentes capacidades multimedia. Eisler escribió en su blog sobre el frenesí con el que se hicieron las versiones 1 a 5 de DirectX .

Antes de que existiera DirectX, Microsoft ya había incluido soporte para OpenGL en Windows NT . En ese momento, OpenGL requería hardware de alta gama que permanecía reservado para usuarios con importantes recursos económicos como en el mundo de la industria y, en general, usuarios de sistemas CAD . Direct3D (presentado por Eisler, Engstrom y St. John como alternativa al OpenGL de SGI ) estaba destinado a ser una tecnología complementaria más ligera y especializada para juegos. Con el poder de las tarjetas gráficas y las computadoras en rápida evolución, OpenGL se convirtió en un estándar de facto y una tecnología accesible para todos. En ese momento, es posible que el choque se haya desatado entre los partidarios de cada una de las dos API, siendo la iniciativa de Microsoft un deseo de marginar el uso de OpenGL (ver Fahrenheit o Direct3D vs. OpenGL). En cualquier caso, OpenGL se usa a veces junto con ciertas API de DirectX: de hecho, OpenGL es la contraparte de Direct3D y no necesariamente incluye funcionalidades que permitan administrar entradas de teclado o mouse o sonido. Esto incluso si hoy en día bibliotecas como SDL también satisfacen estas necesidades y también se utilizan ampliamente.

En su versión de consola, DirectX se ha utilizado como columna vertebral de las API que se ofrecen para el desarrollo en Xbox y Xbox 360 . La API fue desarrollada conjuntamente por Microsoft y Nvidia , que proporcionó el hardware gráfico presente en la Xbox original. La API disponible para esta versión de Xbox era más o menos equivalente a DirectX 8.1 , se llamaba DirectXbox, que se acortó a Xbox para obtener el nombre comercial.

En 2002 , Microsoft lanzó DirectX 9 que tenía soporte para sombreadores más largos y la versión 2.0 de sombreadores de vértices. Desde entonces, Microsoft ha continuado desarrollando DirectX 9 agregando, por ejemplo, soporte para el modelo de sombreado 3.0 con la versión DirectX 9.0c , entregado enAgosto de 2004.

En Abril de 2005, DirectShow se ha movido de DirectX SDK a Microsoft Platform SDK. Sin embargo, aún se requiere DirectX para compilar las muestras de DirectShow.

DirectX 10

DirectX 10 es una actualización importante de la API de DirectX. Disponible solo en Windows Vista , las versiones anteriores de Windows no pueden ejecutar aplicaciones que dependan exclusivamente de esta versión de la API. Los cambios introducidos por DirectX 10 son profundos, pero solo la parte de Direct3D se ve realmente afectada por ellos. Muchas partes de la API de DirectX se consideran obsoletas en la última versión del SDK y ya no están presentes por razones de compatibilidad: DirectInput se reemplaza a favor de XInput, DirectSound a favor de XACT y Xaudio2 y pierde su acceso directo al hardware en Windows Vista. De hecho, la nueva pila de audio de Vista introduce una nueva API llamada WASAPI en la que se han redirigido las funcionalidades de DirectSound. La biblioteca DirectPlay DPLAY.dll también ha desaparecido y ha sido reemplazada por una biblioteca llamada dplayx.dll.

Por razones de compatibilidad, se instalan varias versiones de Direct3D en Windows Vista:
Direct3D 9 ofrece las mismas funcionalidades que la versión de Direct3D 9 disponible para Windows XP . Esta será la única versión disponible siempre que no se haya instalado un controlador de modelo de controlador de pantalla de Windows con Vista, por ejemplo, justo después de una actualización cuando solo hay presente un controlador gráfico XP (XPDM).

Direct3D 9Ex (también conocido como 9.0L o 9.L, la L se refiere a Longhorn, nombre de código de Windows Vista utilizado antes de su lanzamiento): esta versión le permite beneficiarse de ciertas características introducidas por el uso de los controladores WDDM mientras que ahora es compatible con aplicaciones escritas para Direct3D 9 . La interfaz de Windows Aero se basa en D3D 9Ex y utiliza algunas de las características que no están presentes en Direct3D 9 , como la capacidad de compartir superficies DirectX entre múltiples procesos.

Direct3D 10  : diseñado para proporcionar el acceso más directo y completo a las tarjetas gráficas modernas a través del nuevo modelo de controlador WDDM. Esta versión contiene una gran cantidad de características nuevas, como la capacidad de usar el lenguaje HLSL en su versión Shader Model 4 .

Direct3D 10.1 es una actualización menor de Direct3D 10 que se distribuye y requiere Windows Vista Service Pack 1 . Esta versión agrega algunas características adicionales para brindar a los desarrolladores un mayor control sobre la calidad de la imagen resultante. Esta versión tiene sus propios requisitos y requiere compatibilidad con Shader Model 4.1 para operaciones de punto flotante de 32 bits.

DirectX 10.1 sigue haciendo un uso completo de las tarjetas compatibles con DirectX 10 , pero para beneficiarse de todas las nuevas funciones, necesita una tarjeta adecuada.

DirectX 11

Microsoft presentó DirectX 11 en 'Gamefest 08' en Seattle, con características planificadas que incluyen compatibilidad con GPGPU (DirectCompute), Direct3D11 con teselación y subprocesos múltiples mejorados, para ayudar a los desarrolladores de videojuegos a lograr software de múltiples núcleos. Direct3D 11 se ejecuta en Windows Vista y Windows 7. También funcionará en las siguientes versiones. Los elementos de las nuevas API, como el "manejo de recursos de subprocesos múltiples", pueden ser compatibles con el hardware Direct3D 9/10 / 10.1. La teselación de hardware, así como el 'Shader Model 5.0' requieren Direct3D 11. Desde entonces, Microsoft ha actualizado Direct3D 11. Direct3D 11 es un superconjunto de Direct3D 10.1: todas las características de la versión 10.1 están presentes, las nuevas características no están disponibles solo cuando necesario. Esto para una mejor compatibilidad.

DirectX 11.1 está presente en Windows 8 . Es compatible con WDDM 1.2 para un mejor rendimiento, ofrece una integración mejorada de Direct2D, Direct3D, DirectCompute e incluye DirectXMath, XAudio2, así como las bibliotecas XNA de XInput framework. También incluye soporte 3D estereoscópico.

DirectX 11.2 es exclusivo de Windows 8.1 . Esta evolución de la API trae soporte para WDDM 1.3, un intercambio dinámico de recursos entre las diferentes memorias de la computadora (llamados recursos en mosaico ), así como otras evoluciones menores.

DirectX 11.3 es una nueva evolución de la API que tendrá ciertas funciones de DirectX 12, especialmente a nivel de Direct3D.

DirectX 12

la 6 de marzo de 2014, Microsoft ha formalizado el anuncio de DirectX 12 en la Game Developers Conference del 17 al21 de marzoen San Francisco . Esta versión de DirectX está disponible en Windows 10 , Xbox One y Windows Phone y ofrece acceso de nivel inferior a los recursos de circuitos gráficos para ofrecer un mejor rendimiento y un menor consumo de energía. El medio utilizado es facilitar la distribución de los recursos utilizados, para aprovechar mejor las tarjetas multiproceso y multigrafica.


El miércoles 20 de mayo de 2020, Microsoft anunció el puerto de DirectX 12 bajo el sistema operativo Linux como parte de su deseo de acercar Windows 10 a Linux. Cuyo código fuente es Open Source y de consulta gratuita.

Puertos fuera de Microsoft

Aunque DirectX es una API diseñada para el sistema operativo Windows , existen controladores y bibliotecas de software que proporcionan parte de su API en otros sistemas operativos como:

Versiones

Versión Fecha de lanzamiento
Importante Menor Código de versión
1 1.0 4.02.0095 30 de septiembre de 1995
2 2.0 4.03.00.1096 1996
2.0a 5 de junio de 1996
3 3,0 4.04.00.0068 15 de septiembre de 1996
4.04.00.0069 1996
3.0a 4.04.00.0070 Diciembre de 1996
3.0b
4 4.0 Nunca fuera
5 5,0 4.05.00.0155 (RC55) 16 de julio de 1997
5.2 4.05.01.1600 (RC00) 5 de mayo de 1998
4.05.01.1998 (RC0) 25 de junio de 1998
6 6.0 4.06.00.0318 (RC3) 7 de agosto de 1998
6.1 4.06.02.0436 (RC0) 3 de febrero de 1999
6.1a 4.06.03.0518 (RC0) 5 de mayo de 1999
7 7.0 4.07.00.0700  22 de septiembre de 1999
17 de febrero de 2000
7.0a 4.07.00.0716 8 de marzo de 2000
2000
7.1 4.07.01.3000 (RC1) 14 de septiembre de 2000
8 8.0 4.08.00.0400 (RC10) 12 de noviembre de 2000
8.0a 4.08.00.0400 (RC14) 5 de febrero de 2001
8.1 4.08.01.0810 25 de octubre de 2001
4.08.01.0881 (RC7) 8 de noviembre de 2001
8.1a 4.08.01.0901 (RC?) 2002
8.1b 4.08.01.0901 (RC7) 25 de junio de 2002
8.2 4.08.02.0134 (RC0) 2002
9 9.0 4.09.00.0900 (RC4) 19 de diciembre de 2002
9.0a 4.09.00.0901 (RC6) 26 de marzo de 2003
9.0b 4.09.00.0902 (RC2) 13 de agosto de 2003
9.0c 4.09.00.0903  
4.09.00.0904  4 de agosto de 2004
6 de agosto de 2004
4.09.00.0904 (RC0) Agosto de 2005
4.09.00.0905 (RC0) Noviembre de 2008
4.09.00.0906 (RC0) Marzo de 2009
4.09.00.090? (RC0) junio de 2010
10 10.0 6.00.6000.16386 30 de noviembre de 2006
10.1 6.00.6001.18000 18 de marzo de 2008
11 11 6.01.7600.16385 22 de julio de 2009
11 6.01.7601.17514 6 de febrero de 2011
11,1 6.02.9200.16384 1 st de agosto de 2012
11,2 6.03.9600.16384 17 de octubre de 2013
12 12 10.00.10586.0000 29 de julio de 2015
10.00.14393.0000 24 de agosto de 2016
10.00.15063.0000 5 de abril de 2017
10.00.17134.0001 10 de abril de 2018
10.00.17763.0001 2 de octubre de 2018
10.00.18362.0387 noviembre de 2019

Compatibilidad

Las API como Direct3D y DirectSound interactúan directamente con el hardware a través de controladores. Los fabricantes de hardware deben escribir estos controladores para una versión específica de DirectX 'Device Driver Interface' (o DDI). Las versiones anteriores de DirectX incluían una serie de actualizaciones de controladores de DirectX, pero esta práctica se abandonó a favor de Windows Update, que puede permitir a los usuarios descargar solo controladores específicos para su hardware. Las versiones anteriores a DirectX 10 estaban destinadas a ser compatibles con los controladores anteriores, era posible utilizar versiones más nuevas de DirectX con controladores escritos para admitir una versión anterior de DDI. Por ejemplo, un juego basado en Direct3D 9 podría ejecutarse en una máquina equipada con una tarjeta que solo tuviera un controlador desarrollado en el momento de DirectX 6 . Por otro lado con DirectX 10 en Vista, teniendo en cuenta la magnitud de los cambios y el hecho de que ciertas funcionalidades expuestas por la API solo están disponibles gracias al nuevo modelo de controlador, es imposible utilizar una aplicación desarrollada para esta versión sin controlador. DirectX correspondiente al nuevo modelo de controlador WDDM. Varias versiones de DirectX vienen preinstaladas con muchas versiones de Windows para admitir aplicaciones escritas con versiones anteriores de esta API, siempre que no se hayan reescrito para la versión más reciente y se sigan utilizando.

.NET Framework

En 2002, Microsoft puso a disposición de los desarrolladores una versión del SDK de DirectX que trae ensamblados .Net que permiten el uso de DirectX desde código administrado, ya sea en C ++ administrado, C # o cualquier otro lenguaje compatible con .Net Framework. Estos ensamblados se agruparon bajo el nombre "Managed DirectX" (o MDX), y permitieron obtener un rendimiento que no necesariamente tenía que avergonzarse de la comparación con lo que era posible obtener en C ++ nativo. Endiciembre de 2005, Febrero de 2006, Abril de 2006 y agosto de 2006, Microsoft puso a disposición de los desarrolladores sucesivas actualizaciones de esta tecnología para lograr la versión 2.0 que nunca existió excepto en forma de una versión beta que expiró el5 de octubre de 2006.

Durante la GDC de 2006, Microsoft introdujo el XNA GSE Framework, destinado a ser la nueva biblioteca que permite a los desarrolladores que deseen crear juegos utilizando un lenguaje .Net para acceder a las funciones de DirectX. Este Framework también tiene como objetivo facilitar su trabajo agrupando funcionalidades que antes se podían encontrar dispersas en diferentes ensamblajes . Este marco también admite la ejecución de aplicaciones producidas en Xbox 360 . La versión RTM se entregó el11 de diciembre de 2006, como paquete descargable gratuito. A diferencia de DirectX o DirectX administrado, los componentes de XNA GSE Framework o las API de Xbox 360 (XInput, XACT,  etc. ) no están preinstalados con ninguna versión de Windows, por lo que se recomienda instalarlos al mismo tiempo que cualquier otro. juego haciendo uso de.

A principios de 2013, Microsoft anunció el final del desarrollo de XNA y el retiro del programa de certificación Most Valuable Professionals (MVP) en 1 st de abril de 2014. Luego, la comunidad de código abierto toma el control con marcos como MonoGame (que es una implementación de código abierto de XNA) y API como SharpDX que realizan llamadas al código DirectX nativo (como lo hizo MDX).

64 bits y 32 bits

El sistema DirectX es compatible con todos los sistemas operativos de Microsoft, 32 bits (x86) y 64 bits (x64).

Alternativas

Hay varias bibliotecas que a menudo cubren algunas de las funciones de DirectX. Usando una combinación de estos se puede lograr el mismo conjunto de características que DirectX, podemos mencionar SDL , Allegro , OpenMAX , OpenML , OpenGL , OpenAL , Vulkan , FMOD ,  etc. Estas bibliotecas pueden tener la ventaja de permitir el desarrollo de aplicaciones portátiles en sistemas operativos distintos de Windows. Estas bibliotecas provienen principalmente de proyectos de código abierto .

Otros proyectos, como parte de Wine , tienen como objetivo proporcionar una implementación alternativa del mismo conjunto de funciones.

Notas

  1. "  DirectPlay  " , en docs.microsoft.com ,11 de junio de 2009(consultado el 17 de enero de 2020 )
  2. (en) "  Portal - XNA Xbox LIVE Indie Games  ' , Microsoft
  3. (in) "  ¿Qué sigue para DirectX? Una descripción general de DirectX 11 - Una descripción general de DirectX 11  » , Elite Bastards,1 st de septiembre de 2008(consultado el 4 de septiembre de 2008 )
  4. (in) "  DirectX 11: Una mirada a lo que viene  " , bit-tech.net,17 de septiembre de 2008
  5. Error de modelo de fecha de lanzamiento de Windows 7 y D3D 11 {{Enlace de archivo}}  : ingrese un parámetro "   "|titre=
  6. Gamefest 2008 y el anuncio de DirectX 11
  7. http://www.hardware.fr/news/13601/directx-12-officialise.html
  8. Fabien Pellegrini, "  DirectX 12: las promesas, las primeras pruebas  " , en clubic.com ,13 de abril de 2015(consultado el 2 de octubre de 2020 ) .
  9. Por Romain Pomian-Bonnemaison y 20/05/2020 , “  DirectX 12: ¡Microsoft portará su tecnología gráfica a Linux!  » , En PhonAndroid ,20 de mayo de 2020(consultado el 2 de junio de 2020 )
  10. (in) "  microsoft / WSL2-Linux Kernel  " en GitHub (consultado el 2 de junio de 2020 )
  11. (in) "  XNA no evolucionará  "

enlaces externos