Tutoriales

DirectX 12 vs DirectX 11, te explicamos sus diferencias y cuál rinde mejor

DirectX 12, el conjunto de API fundamental para los videojuegos del momento, evoluciona enormemente en cada versión. Por tanto, este artículo de DirectX 12 vs DirectX 11 es realmente importante. Vamos a dar un repaso a las diferencias técnicas más importantes y a ver cómo varía el rendimiento en distintos juegos actuales. ¡Comencemos!

Qué es una API

Antes de introducir el concepto de DirectX, veamos qué es una API en programación. API es el acrónimo de application program interface, o interfaz de programación de aplicaciones. Se trata de código que permite a dos programas comunicarse entre sí.

Nos referimos específicamente a programas totalmente distintos, seguramente creados en lenguajes de programación diferentes, y por equipos o empresas que no tienen nada que ver entre sí. La API define cuál es la manera correcta para que el desarrollador del «programa A» escriba código con el que poder solicitar y/o proporcionar servicios al «programa B».

En definitiva, una API consigue que dos programas totalmente distintos se entiendan. Son, esencialmente, un conjunto de normas a seguir para establecer la comunicación de forma segura, correcta y eficaz. Tiene mucho que ver también con el concepto de interfaz en programación (de ahí las siglas) o el de framework.

Hay muchísimos tipos de API, según cómo se comunicarán. Dos ejemplos extremos:

  • Una API web pública permite a cualquier programador extraer una información valiosa de una web (por ejemplo, el pronóstico del tiempo o un listado de billetes de avión disponibles) para usarla en un software o simplemente hacer análisis de datos.
  • Una API privada de programa hace que dos software se comuniquen entre sí, pero solo se proporciona la forma de comunicarse para esos software específicos, y todo ocurre en la misma máquina.

Con estos dos ejemplos queremos que veáis que hay muchísimas formas distintas de API. Ahora, es el momento de centrarnos en la API DirectX.

Qué es DirectX

Microsoft DirectX es una API pensada para la creación y el manejo de elementos gráficos y multimedia en sistemas operativos Windows.

Realmente, DirectX es más bien un conjunto de varias APIs distintas, decir que es una sola API no es más que una simplificación. Entre ellas, se incluyen:

  • Direct2D: API para gráficos 2D acelerados por hardware que incluye renderizados de calidad para mapas de bits, geometría y textos.
  • Direct3D: API para la creación de gráficos 3D para juegos y aplicaciones científicas.
  • DirectWrite: API de renderizado de texto de alta calidad.
  • DirectXMath: API para operaciones de álgebra lineal y aritméticas en vectores y matrices.
  • DirectML: se usa para la integración de machine learning e inteligencia artificial en juegos, motores y otros programas.
  • … etc

Nuestro análisis de DirectX 12 vs DirectX 11 se va a enfocar en lo que afecta a los juegos, tomamos DirectX como un conjunto pero tiene mucho que ver con API como Direct3D o DirectML.

Antes hablábamos de las API como una forma de comunicar programas: ¿cuáles comunica DirectX exactamente?

Como vemos en el diagrama de arriba, DirectX hace el siguiente flujo de comunicación:

  • La aplicación (el juego) se comunica con la API DXGI (de DirectX) directamente, o mediante otros software adicionales.
  • También se comunica con DXGI a través de Direct3D, que dialoga con los drivers de la tarjeta gráfica en modo de usuario, y estos a su vez con DXGI.
  • DXGI (DirectX Graphics Infrastructure) se comunica con los drivers de la tarjeta gráfica en modo kernel (es decir, con la máxima autoridad), y estos con el hardware del ordenador.

En la mayoría de videojuegos para Windows, los desarrolladores utilizan DirectX frente a otras API también muy populares como OpenGL o Vulkan. Por eso, cada versión de DirectX es muy importante: ahora vamos por la 12.

El papel de DirectX en nuestros videojuegos es brutal, por eso ahora vamos a comparar la última versión, la 12, vs DirectX 11.

Por fortuna para los que quieran desarrollar videojuegos, no tienen por qué pelearse demasiado con DirectX y sus distintas novedades (cada cambio de versión es un salto gigantesco), ya que hay más capas de abstracción que se pueden aplicar, como por ejemplo los motores de juegos como Unity.

DirectX 12 vs DirectX 11: diferencias técnicas

A nivel técnico, al comparar DirectX 12 vs DirectX 11 vemos una gran cantidad de diferencias en cómo funcionan estas API a la hora de desarrollar videojuegos.

DirectX 12 traslada al desarrollador mucha más responsabilidad a la hora de realizar ciertas tareas, que antes eran manejadas directamente por los drivers. Esto permite conseguir una optimización mucho mayor de los juegos y, sobre todo, aprovechar más núcleos del procesador, al realizarse estas tareas por parte de aplicaciones individuales y no directamente en el driver.

Así, los juegos DirectX 12 aprovechan todos los núcleos, vs los juegos DirectX 11 que normalmente solo aprovechaban uno o unos pocos. Esto es importantísimo: DX11 se lanzó en 2009, donde lo más común era una CPU de 2 núcleos, y DX12 se lanzó en 2015, con las de 4 núcleos liderando. Ahora, es lo más normal del mundo tener 6 núcleos, o incluso 8, 12, 16, etc.

DirectX 12 es fundamental para aprovechar los procesadores modernos y su número de núcleos, algo de lo que DirectX 11 no puede presumir.

En definitiva, DirectX 12 permite un mejor aprovechamiento del hardware en todos los sentidos. Este es, de hecho, el motivo por el que las tarjetas gráficas AMD funcionaban mejor que las de NVIDIA bajo DX12 hace unos años, porque tenían más potencia bruta.

Hace años, NVIDIA era mejor en drivers (conseguían exprimir mejor el rendimiento), pero AMD tenía mucha «potencia bruta» desaprovechada. La llegada de DX12 quitó ventaja a NVIDIA, al depender menos de los drivers.

A día de hoy, ambas compañías están plenamente centradas en DirectX 12, si bien AMD recientemente mejoró su rendimiento en DX11 en un 10% con una mejora de drivers. ¡Aquí se ve lo que explicamos!

Más ventajas técnicas de DirectX 12 vs DirectX 11

Vamos a ver algunas de las demás diferencias a nivel técnico que se implementan en DirectX 12 vs DirectX 11, y especialmente aquellas de más bajo nivel de las que se encargan normalmente los propios motores:

  • Cada llamada de dibujado tiene su propio estado. El «estado» interno de la API indica la asignación de recursos y cuáles están disponibles. En DirectX 11, hay un único hilo que mantiene un estado global de los recursos. Ahora, cada llamada de dibujado (drawcall) tiene un estado propio, lo que permite usar distintos hilos para distintas drawcalls, y aprovechar aún mejor los núcleos.
  • Agrupación de estados en PSO (Pipeline State Objects). Seguimos hablando de los estados de las drawcalls. Se han agrupado ciertos elementos que antes dependían el uno del otro, de forma que se aprovecha más el hardware. Se paraleliza más la GPU.
  • Cola de comandos. DirectX 12 cuenta con varias colas de comandos (una lista secuencial de acciones a realizar), frente a DirectX 11, que aprovecha peor la CPU al usar solo una.

Como vemos, en DirectX 12 vs DirectX 11 todo se centra en la mayor utilización del hardware

Características especiales de DirectX 12 Ultimate que no están en DirectX 11

DirectX 12 no solo trae novedades a nivel técnico impresionantes respecto a DirectX 11, sino que ha avanzado enormemente con nuevas características que a día de hoy prácticamente todos conocemos. Hablamos de las novedades gráficas de los últimos años. Estas no se entienden, mayoritariamente, sin la ayuda de DirectX 12 y su versión «Ultimate».

Hablamos, por ejemplo, de DirectX Ray Tracing (DXR), la API que permite el soporte de ray tracing en tiempo real por parte de AMD y NVIDIA, y muchos juegos. De esta API, DX12 Ultimate incluye la versión 1.1 que mejora enormemente la manera de funcionar del Ray Tracing.

También hablamos de otras características fundamentales como VRS (Variable Rate Shading), CAS (Content Adaptative Shading), Sampler Feedback, etc.

DirectX 12 vs DirectX 11: diferencias de rendimiento

Todas estas mejoras técnicas son muy evidentes, pero no tienen mucho interés si no vienen acompañadas de un aumento notable en el rendimiento.

Para comprobarlo, se puede coger un juego que soporte ambas API (esto tiene sentido, porque así soporta gráficas más antiguas) y ver cuál es su desempeño cambiándolas. En este caso, vamos a tomar como referencia un vídeo de YouTube en el que lo comparan utilizando una RTX 3060 Ti.

Además, el procesador es un Ryzen 5 3600, se trata de una CPU de 6 núcleos, por lo que es interesante para la prueba. Por supuesto, las diferencias dependerán mucho de cada situación, en función del PC, los drivers, el juego, la gráfica y procesador, etc.

Con este vídeo sobre la mesa, vemos que en algunos juegos DirectX 11 sorprendentemente consigue mejores FPS que la versión 12. Esto no significa para nada que DX11 sea mejor, y hay varios motivos para explicarlo:

  • Por una parte, vemos que por lo general el frametime es mucho más estable con DX12 en la mayoría de juegos. Esto supondrá una mejor experiencia de juego, más libre de stuttering.
  • Recordemos además todo el set de ventajas que incluye DX12 Ultimate y que hemos comentado antes.

Si quieres, puedes probar tú mismo cómo es la experiencia de juego cambiando a DirectX 11 en los ajustes gráficos. Lo más probable es que la jugabilidad sea peor.

En cambio, lo que es perjudicial para DirectX 12 vs DirectX 11 es que las mayores responsabilidades del desarrollador son un arma de doble filo, pueden llevar a una mejor optimización por parte del mismo, pero también puede hacerlo peor que lo que se consigue con DX11. En todo caso, utiliza DirectX 12 y mantén tus drivers, software y juegos actualizados para disfrutar siempre de la máxima optimización.

Recuerda además que es necesario tener Windows 10 o superior para utilizar DirectX 12.

DirectX 13, ¿cuándo se lanzará?

Tengamos en cuenta que DirectX 11 se lanzó en 2009, para sustituir a DirectX 10. Luego, DirectX 12 llegó en 2015. Por tanto, tiene sentido pensar que pronto se lanzaría DirectX 13, ¿o no?

Lo cierto es que no se sabe nada sobra la aparición de esta API por el momento. Tengamos en cuenta además que los cambios son demasiado grandes, así que es algo a lo que los desarrolladores tendrían que adaptarse. Esto lleva a un período largo de transición y a tener que sacar las cosas con calma.

En el momento en que sepamos algo de DirectX 13 (o como decidan llamarla), quedarán meses y meses hasta que veamos los primeros juegos que lo integren. No parece que vaya a darse su lanzamiento por ahora, quién sabe si en 2023 o 2024 (¡o después!) y recordemos que DirectX 12 ha cambiado mucho desde su aparición con la versión Ultimate.

Te recomendamos la lectura de las mejores tarjetas gráficas del mercado.

Esperamos que este artículo te haya resultado de ayuda para conocer DirectX 12 vs DirectX 11 y tomar siempre la mejor decisión de compra.

Recent Posts

  • Tarjetas gráficas

Nvidia RTX 5070: Especificaciones filtradas, 12 GB GDDR7 y 6.400 nucleos CUDA

Se habrían filtrado las especificaciones de la tarjeta gráfica GeForce RTX 5070, que podría lanzarse…

3 horas atrás
  • Noticias

Seguridad de Windows 11: todas las funciones de este antivirus gratuito

En esta guía te voy a explicar qué es Seguridad de Windows 11, para qué…

4 horas atrás
  • Reviews

Corsair RX120 MAX RGB Review en Español (Análisis completo)

Tenemos nuevos ventiladores para analizar, los Corsair RX120 MAX RGB representan una de las opciones…

4 horas atrás