Diferencias entre DirectX 11 y DirectX 12

DirectX es un componente del sistema esencial para los gráficos. Un elemento que trabajará muy estrechamente con la GPU de tu equipo para poder formar todo lo que puedes ver en pantalla. En cambio, a pesar de su popularidad, no muchos saben lo que es realmente.

Aquí podrás aprender un poco más sobre este proyecto de Microsoft y sobre las mejoras implementadas en la última versión, la DirectX 12.

¿Qué es una API?

Una API (Application Programming Interface), o interfaz de programación de aplicaciones, es un conjunto de subrutinas, funciones y procedimientos que ofrece cierta biblioteca de software para ser utilizado por otro software como una capa de abstracción. Esto facilita mucho el trabajo de los desarrolladores.

Además, la API permite la comunicación entre dos programas a través de un conjunto de reglas. Es decir, es una especificación formal que establece cómo un módulo de software puede interactuar con otro.

En la actualidad existen multitud de APIs para multitud de campos, como algunas para web, para aplicaciones generales, gráficas, etc. Por ejemplo, seguro que te suenan nombres de APIs como OpenCL, OpenGL, Vulkan, DirectX, WebGL, OpenXR, Google Maps API, Amazon S3 API, Alexa API, Watson API, TensorFlow APIs, etc.

¿Qué es DirectX?

DirectX es un proyecto iniciado por Microsoft en 1995, una API multimedia que consta a su vez de varias partes. Por ejemplo, tienes la API gráfica Direct3D, DirectSound/Direct Music para sonido, DirectInput para el control de periféricos (mandos, joysticks, teclados…).

Algunos piensan que DirectX es en sí la API gráfica, pero no. Por eso, se refieren a DirectX cuando realmente están pensando en Direct3D.

Direct3D tiene competidores como OpenGL y Vulkan, especialmente éste último ha ganado gran importancia por su enorme potencia.

Sea como sea, la API Direct3D, contiene un conjunto de funciones que permiten a programas gráficos o videojuegos inicializar los modos gráficos que necesitan, realizar copiados de datos desde la memoria a la tarjeta gráfica (blitting), formar polígonos, etc.

Dicho de otro modo, la API DirectX actuará como intermediaria entre los videojuegos y los drivers o controladores gráficos. Estos controladores a su vez son los que interactúan con el kernel del sistema operativo, en este caso, Windows NT. Será en la API gráfica donde se resuelve el diseño y mecánica de los gráficos. Para que lo veas más claro, piensa en MS Paint como una API y el juego es la pintura. MS Paint provee al juego de las herramientas y colores para poder generar el mundo digital que se pretende dibujar.

Los diseñadores de GPUs admiten un conjunto de bibliotecas o versiones de la API específicas. Por eso no todas las tarjetas gráficas soportan todas las versiones de DirectX o de OpenGL.

Mejoras de DirectX 12 frente a DirectX 11

Con cada nueva versión de DirectX se consiguen mejoras considerables con respecto a versiones anteriores, además de agregar algunas funciones extra para las nuevas generaciones de videojuegos, ya que se demandan nuevas posibilidades.

DirectX 12

Es la última versión de la API que ha lanzado Microsoft para Windows 10 y Xbox. DirectX 12 ha supuesto una mejora notable con respecto a DirectX 11, tanto en el rendimiento, como en otras novedades. El rendimiento ganado proviene de optimizaciones en la forma en la que se aprovechan los recursos de hardware, especialmente en configuraciones de varios núcleos de CPU y varias tarjetas gráficas (multi-GPU).

A pesar de eso, Vulkan sigue siendo el preferido por muchos desarrolladores. Y DirectX no ha obtenido los resultados que muchos estaban esperando. De hecho, el apoyo inicial para la versión 12 fue mínima, aunque ha ido mejorando poco a poco.

Esto se debía en parte al rendimiento, y en parte a la complejidad técnica para los desarrolladores, ya que necesitaba de cambios significativos para poder extraer todo su potencial. En definitiva, mucho potencial sobre el papel y no tanto en la práctica.

DirectX 11 vs DirectX 12

DirectX 12 ha mejorado con respecto a DirectX 11. Aquí trataré de resumir algunas de las mejoras y novedades:

  • Una de las mejoras más importantes entre DX12 y DX11 es que la versión 11 no fue diseñada con los microprocesadores multinúcleo en mente. Por tanto, no está optimizada para CPUs de más de un core. En DirectX 12 sí que se aprovecha esta capacidad de los nuevos equipos, por lo que se consigue mejor rendimiento (fluidez, FPS…).
  • También se ha mejorado para que aproveche mejor las nuevas memorias, y el uso de varias tarjetas gráficas. Además, el uso del hardware se hace de forma más eficiente, reduciendo el consumo.
  • Además, también viene con funciones para aprovechar mejor algunas características nuevas en las modernas GPUs, como por ejemplo:
    • Ray Tracing: el trazado de rayos es un algoritmo para sintetizar imágenes que calculará el camino de la luz para simular mejor los efectos sobre las superficies. Eso mejora enormemente la calidad de la imagen, y puede aprovecharse en las modernas tarjetas gráficas NVIDIA y AMD.
    • Mesh Shading: NVIDIA lanzó también esta otra tecnología de sombreado de malla. Una técnica para generar sombras en escenas donde hay varios objetos en pantalla. Así se pueden generar las sombras del conjunto de objetos en vez de cada uno de ellos por separado.
    • Variable Rate Shading: el VRS es una técnica para el sombreado a velocidad variable. Cada región puede tener una tasa de shading diferente, permitiendo a los desarrolladores mejorar la calidad y el rendimiento del juego.
    • Sampler feedback: es una característica específica de Direct3D que define cómo se capturan y graban las informaciones de texturas y localizaciones en la pantalla. Hasta ahora, los desarrolladores veían estos datos de forma opaca, con menos calidad, y requiriendo mayor esfuerzo por parte del hardware. Ahora todo eso se ha mejorado, lo que mejora el streaming.

Por ejemplo, si se hace una prueba con Fable Legends, el videojuego consigue 43 FPS (48 FPS en el mejor caso) con DirectX 11, mientras que en DirectX 12 se llega a los 53 FPS e incluso 61 FPS en el mejor de los casos. Eso hace ver que este videojuego ha sido optimizado para DX12. Esto es importante, ya que de lo contrario, no podría aprovechar esa mejor aunque tuvieses DX12 instalado en tu sistema.

Saber la versión de DirectX que estás usando

Si estás en Windows, puedes saber la versión de DirectX que usas de forma muy sencilla y sin instalar nada. Tan solo tienes que seguir estos simples pasos:

  1. Ve al buscador de Windows 10 o a la herramienta ejecutar (tecla Win+R).
  2. Ahora escribe “dxdiag” sin comillas.
  3. Ejecuta dicho programa y te mostrará los detalles de tu versión.