| Artículos | 01 ABR 2009

DirectX 11

Tags: Histórico
Windows 7 supondrá la introducción de la nueva versión de esta API
Eugenio Barahona.
El lanzamiento comercial del actual Windows Vista supuso una renovación muy importante de toda la infraestructura gráfica que, hasta ese momento, Microsoft utilizaba en sus sistemas operativos. Los cambios fueron tan profundos que incluso se modificó sustancialmente el modelo de drivers de vídeo que hasta entonces se usaba. En efecto, Windows Vista era capaz de usar controladores de dispositivo para hardware de vídeos desarrollados para Windows XP, pero al mismo tiempo introducía una nueva forma de implementar estos componentes software. Mientras que en el caso de XP los controladreos de vídeo eran componentes que se ejecutaban en modo kernel (eran drivers), en Vista es necesario desarrollar un controlador de vídeo en forma de librería de enlace dinámico, que funciona en modo usuario, y un driver que se comunica con el subsistema de DirectX que se ejecuta en modo kernel.

La introducción comercial de la nueva versión de Windows, supondrá también una nueva revisión de gran parte de la tecnología software usada en el apartado gráfico del sistema operativo. Si bien lo más llamativo es la presentación de una nueva versión de DirectX, hay novedades interesantes como el lanzamiento de dos nuevas API que se aprovecharán de las capacidades de aceleración por hardware de las potentes GPU actuales.

Nuevas API: Direct2D y DirectWrite
Hasta hace unos años las API gráficas de Microsoft que hacían uso de aceleración por hardware eran DirectDraw y Direct3D, pero desde algún tiempo ambas se encuentran englobadas bajo la denominación DirectX Graphics. Mientras que DirectDraw era una interfaz de programación destinada a la aceleración de operaciones gráficas en dos dimensiones, Direct3D se ocupaba de realizar tareas equivalentes pero para gráficos en tres dimensiones. Desde la unión de ambas API en una sola no ha existido una interfaz independiente destinada a la aceleración de gráficos 2D.
Windows 7 supondrá la aparición de Direct2D, una interfaz de programación que ofrecerá servicios de gráficos en dos dimensiones. Lo primero que llama la atención de esta API es que podrá estar acelerada por hardware o bien implementada sólo en software. Para algunas operaciones la implementación por software quizás no sea tan mala como en un principio podría parecer, sobre todo teniendo en cuenta que hoy en día muchos usuarios disponen de equipos con procesadores con varios núcleos, de forma que aún en el supuesto de que un núcleo se dedicase principalmente a procesar las operaciones de Direct2D, aún quedarían uno o más núcleos disponibles para ejecutar otras operaciones.
Direct2D se encargará principalmente de acelerar todo lo relacionado con la visualización de gráficos vectoriales, mapas de bits y texto. La API se ha diseñado de manera que pueda interoperar con el actual GDI y con Direct3D, lo que ha ayudado a que además se pueda ofrecer un elevado rendimiento gráfico al estar basada sobre algunas funcionalidades integradas en Direct3D desde hace tiempo. Las previsiones de Microsoft indican que el uso de Direct2D producirá un menor consumo de tiempo de procesador que el uso que hasta ahora se venía haciendo de GDI o GDI+. La integración con Direct3D además dota a esta nueva API de características como transparencias, anti alias especificado por cada primitiva ejecutada o de una imagen completa.
Por otro lado tenemos a DirectWrite, que como su nombre sugiere se encarga de mejorar y acelerar la presentación de caracteres en pantalla. La aceleración del dibujado de caracteres de efectúa aprovechando la aceleración por hardware que puede usar Direct2D. Otra de las capacidades interesantes que introduce DirectWrite es el suavizado de los bordes de los caracteres, lo que se consigue al usar las capacidades de suavizado de que dispone el hardware gráfico actual. Si bien DirectWrite produce los mejores resultados al usarse en una plataforma que soporte Direct2D, lo cierto es que esta tecnología está diseñada para funcionar con cualquier tecnología de render soportada por los sistemas operativos de Microsoft, por lo que puede utilizar, además de Direct2D, DirectX y GDI. Se estima que esta API es capaz de ofrecer el doble de rendimiento que si se usase sólo el GDI para generar texto.

Direct3D 11
Oficialmente Microsoft describe esta nueva versión de Direct3D como un súper conjunto de la versión 10.1 de esta misma API, por lo que recomienda a los desarrolladores que empleen Direct3D 10.1 como plataforma de desarrollo para facilitar la transición hacia la nueva versión. Dentro del apartado de malas noticias hay que resaltar que la versión 11 sólo va a estar disponible para Windows Vista y Windows 7, por lo que los usuarios de XP no van a poder aprovecharse de las mejoras que se introducen con esta nueva interfaz de programación.
Los principales objetivos de los desarrolladores de Microsoft durante la implementación de Direct3D 11 han sido mejorar la escalabilidad y el rendimiento de esta API, al tiempo que se extendía el tipo de aplicaciones que es posible desarrollar para las GPU actuales. A pesar de estas mejoras la nueva versión de Direct3D funcionará sobre hardware compatible con las versiones 9 y 10 de esta API.
De hecho una aplicación bien realizada que use Direct3D podrá funcionar sobre cualquier hardware gráfico o incluso sin él. Esto se debe a que se incluye un renderizador implementado totalmente por sofware, al que Microsoft denomina WARP, que produce resultados visualmente idénticos a los que se obtendrían al usar hardware de aceleración 3D. Se ha trabajado mucho en la mejora de esta implementación software del renderizador, de forma que mucho más rápido que la versión por software que existía hasta el momento, denominada RefFast, hasta el punto de que es posible utilizarlo para ejecutar aplicaciones que requieran funcionamiento en tiempo real. Una buena parte de las mejoras que se han obtenido con WARP se deben a que está optimizado para ejecutarse en procesadores con varios núcleos, lo que se complementa con un amplio uso de las extensiones SSE del juego de instrucciones x86.
Una de las novedades más interesantes, que debe estar soportada por el hardware compatible con Direct3D 11, es la que calcula en tiempo real nuevos polígonos a partir de los que tiene la geometría original del modelo 3D que se desee mostrar en pantalla. De esta forma es posible generar en pantalla modelos tridimensionales con un nivel de detalle muy elevado sin necesidad de que el diseñador gráfico produzca modelos geométricamente muy complejos. Esta nueva posibilidad además reduce el espacio necesario para almacenar la geometría de los modelos 3D, ya que sino sería necesario añadir explícitamente los polígonos que gracias a esta característica el hardware puede calcular por sí mismo.
Esta característica de cálculo de geometría adicional le resultará de interés a los desarrolladores que produzcan para Xbox 360, ya que dicha plataforma posee un subconjunto del modelo de cálculo de geometría que se ha incluido en Direct3D 11. Esta paridad entre el hardware de PC y Xbox 360 sin duda facilitará la creación de productos multi plataforma.
Otra nueva posibilidad tiene que ver con la programación de los shaders (programas que se ejecutan en la GPU), ya que con esta nueva versión de Direct3D será posible usar subrutinas. Además se

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información