Acerca de Direct2D

En este tema se presenta Direct2D, una API que proporciona a los desarrolladores de Win32 la capacidad de realizar tareas de representación de gráficos 2D con un rendimiento y una calidad visual superiores.

¿Qué es Direct2D?

Direct2D es una API de gráficos 2D acelerada por hardware que proporciona un alto rendimiento y una representación de alta calidad para geometría 2D, mapas de bits y texto. La API de Direct2D está diseñada para interoperar con código existente que usa GDI, GDI+o Direct3D.

Direct2D está diseñado principalmente para su uso por las siguientes clases de desarrolladores:

  • Desarrolladores de aplicaciones nativas de gran escala, de escala empresarial.
  • Desarrolladores que crean bibliotecas y kits de herramientas de control para su consumo por parte de los desarrolladores de nivel inferior.
  • Desarrolladores que requieren representación del lado servidor de gráficos 2D.
  • Los desarrolladores que usan gráficos de Direct3D y necesitan una representación sencilla de texto y 2D de alto rendimiento para menús, elementos de interfaz de usuario (UI) y pantallas de encabezado (HUD).

¿Por qué Direct2D?

Las principales motivaciones para crear una nueva API de gráficos 2D en Microsoft Windows incluyen lo siguiente:

  • Para mantener el ritmo con el creciente nivel de riqueza visual al que están acostumbrados los usuarios de Windows.
  • Para permitir a los desarrolladores escribir código de representación 2D que se escala directamente con el hardware de procesamiento gráfico del equipo en el que se ejecuta.
  • Para permitir que los desarrolladores escriban código para representar gráficos 2D que se pueden ejecutar en el contexto de un servicio.

En los últimos años, los usuarios finales han empezado a esperar una mayor fidelidad visual en experiencias digitales. Esta tendencia se refleja en la electrónica del consumidor. Los dispositivos GPS, los dispositivos de reproducción multimedia, los teléfonos móviles y las cámaras digitales ofrecen experiencias coherentes más enriquecidas año tras año. Esta tendencia también puede verse en la diversidad de contenido gráfico en películas, televisión, videojuegos y en la Web. Para mantener el ritmo de estos cambios, se pide a los desarrolladores que tomen sus aplicaciones de Windows existentes al siguiente nivel de riqueza visual.

Los procesadores gráficos en equipos Windows modernos también han evolucionado constantemente, impulsados por avances en gráficos de videojuegos y partes de la experiencia de Windows como Windows Media Center y Aero. Algunas aplicaciones de Windows pueden aprovechar las GPU modernas mediante Microsoft Direct3D y Windows Presentation Foundation (WPF). Aunque Direct3D atiende aplicaciones de gráficos 3D de alto nivel y WPF aborda las necesidades de los desarrolladores de .NET, hay brechas para los desarrolladores que tienen grandes bases de código base de representación existentes basadas en GDI y GDI+ o que desean incorporar gráficos de alta calidad 2D en sus aplicaciones basadas en Direct3D.

Por último, la necesidad de una API de gráficos que se pueda usar en un servicio se ha convertido en un requisito emergente para los desarrolladores que trabajan en escenarios de desarrollo web y empresarial. Las API de representación existentes se centran en la representación del lado cliente en una sola sesión de usuario. Por lo tanto, pueden quedar cortos en áreas de solidez y escalabilidad cuando se usan en un contexto de servicio. Se requiere una nueva API para solucionarlo.

Alto rendimiento con máxima disponibilidad

Direct2D es una biblioteca en modo de usuario que se compila mediante la API de Direct3D 10.1. Esto significa que las aplicaciones de Direct2D se benefician de la representación acelerada por hardware en GPU estándar modernas. La aceleración de hardware también se logra en hardware de Direct3D 9 anterior mediante la representación direct3D 10-level-9. Esta combinación proporciona un excelente rendimiento en hardware gráfico en equipos Windows existentes.

Nota

A partir de Windows 8, Direct2D se compila mediante la API de Direct3D 11.1.

 

En el diagrama siguiente se muestra la arquitectura superpuesta de Direct2D.

diagrama de la arquitectura superpuesta direct2d

En escenarios en los que el uso de la aceleración de hardware no es factible, Direct2D incluye un rasterizador de software de alto rendimiento. Al representar en software, las aplicaciones que usan Direct2D experimentan un rendimiento de representación considerablemente mejor que con GDI+ y con una calidad visual similar. El rasterizador de software también está diseñado para su uso en un contexto de servicio.

El contenido que se representa mediante Direct2D también se puede mostrar de forma remota mediante la infraestructura del Protocolo de escritorio remoto (RDP) en el sistema operativo Windows 7. Los desarrolladores pueden seleccionar si la representación se controla mediante la GPU en el equipo para mostrar o se representan localmente y se transmiten como mapas de bits. Esta elección se puede realizar en función de la velocidad de relleno necesaria y de la cantidad de primitivos de gráficos que se representan. Cuando el equipo para mostrar ejecuta un sistema operativo anterior a Windows 7, la representación de pantalla remota se realiza transmitiendo mapas de bits a través de la red.

Al proporcionar una sola API que combina el rendimiento de Direct3D y la alta disponibilidad proporcionando reserva de software, escritorio remoto y representación de servicios, Direct2D permite a los desarrolladores tener una única implementación para la representación de alto rendimiento en muchos escenarios diferentes.

Calidad visual

Las aplicaciones que usan Direct2D para gráficos pueden ofrecer una mayor calidad visual que la que se puede lograr mediante GDI. Direct2D usa el suavizado de suavizado por primitivo para ofrecer curvas y líneas con aspecto más suave en el contenido representado. También hay compatibilidad completa con la transparencia y la combinación alfa al representar primitivos 2D. Las siguientes imágenes comparan el contenido con alias representado mediante GDI (a la izquierda) con contenido suavizado representado por Direct2D (a la derecha).

ilustración de curvas y líneas que se representan en gdi y en direct2d

Los desarrolladores pueden especificar la representación con alias de gráficos vectoriales. Esto se usa en escenarios en los que se requiere ajustar los límites de píxeles duros, como elementos de la interfaz de usuario como punteros o reglas, si el estilo GDI de salida debe coincidir o si el suavizado de contorno se realizará de bajada en el proceso de representación a través de Antialiasing multisample o algún otro mecanismo.

Interoperabilidad

La integración de la representación basada en Direct2D es más fácil para los desarrolladores a través de la interoperabilidad de nivel de superficie con GDI y Direct3D. Las aplicaciones que representan contenido principalmente con GDI, GDI+o Direct3D, pueden comenzar usando Direct2D para representar áreas específicas de su aplicación y, con el tiempo, pasar a un modelo donde la representación se realiza principalmente a través de Direct2D, mediante GDI principalmente para complementos o extensibilidad heredada.

Direct2D también facilita el uso de DirectWrite para texto de alta calidad y las características avanzadas de creación de imágenes del componente de imágenes de Microsoft Windows (WIC).

Para obtener más información sobre la interoperabilidad de Direct2D, consulte la sección Interoperabilidad del SDK de Direct2D.

Resumen

Microsoft Direct2D permite a los desarrolladores crear características de gráficos 2D en sus aplicaciones que proporcionan una calidad visual mejorada sobre GDI y características de rendimiento que se escalan con GPU modernas. El modelo de interoperabilidad de Direct2D permite a los desarrolladores migrar de forma selectiva partes de su aplicación a la vez junto con la representación basada en GDI, GDI+o Direct3D.

Inicio rápido de Direct2D para Windows 8

Introducción a la API de Direct2D