Gráficos de alta fidelidad con DirectX
Los desarrolladores de aplicaciones de Windows han usado desde hace tiempo Microsoft DirectX para proporcionar gráficos 3D de alta calidad, acelerados por hardware. Cuando la tecnología debutó en 1995, los desarrolladores podrían proporcionar gráficos 3D de alta calidad para juegos y aplicaciones de ingeniería para jugadores y profesionales dispuestos a pagar extra por una placa gráfica 3D. Ahora, incluso los equipos más baratos incluyen hardware de gráficos 3D compatibles.
Para aprovechar estas funcionalidades de gráficos, Windows Vista introdujo la infraestructura del modelo de controladores de pantalla de Windows (WDDM) para DirectX que habilitó varias aplicaciones y servicios para compartir los recursos de la unidad de procesamiento gráfico (GPU). Desktop Window Manager (DWM) usa esta tecnología para animar el cambio de tareas en 3D, proporcionar imágenes en miniatura dinámicas de ventanas de la aplicación y proporcionar efectos de vidrio Aero de Windows para aplicaciones de escritorio.
Windows 7 pone aún más funcionalidad de gráficos en manos de los desarrolladores de aplicaciones. A través de un nuevo conjunto de DirectXAPIs, los desarrolladores de Microsoft Win32 pueden aprovechar las últimas innovaciones en gpu para agregar gráficos, 2D y 3D rápidos, escalables, 2D y 3D, texto e imágenes a sus aplicaciones. En las pantallas LCD más recientes, DirectXAPIs puede mostrar contenido de escritorio y ventana con una profundidad de color superior a 8 bits por componente de color.
Con DirectX, los desarrolladores de Win32 también pueden usar el paralelismo de la GPU para el cálculo de uso general, como el procesamiento de imágenes, y pueden representarse en hardware de DirectX 10, hardware de DirectX 9, cpu o en un equipo Windows remoto. Estas tecnologías se diseñaron para interoperar con windows Graphics Device Interface (GDI) y Windows GDI+, lo que garantiza que los desarrolladores puedan conservar fácilmente sus inversiones existentes en código Win32. (Consulte Novedades del SDK de DirectX de marzo de 2009).
Estas funcionalidades de gráficos mejoradas se proporcionan mediante las siguientes API basadas en COM:
- Direct2D para dibujar gráficos 2D.
- DirectWrite para organizar y representar texto.
- Componente de creación de imágenes de Windows para procesar y mostrar imágenes.
- Direct3D 10 para dibujar gráficos 3D.
- Direct3D 11 para dibujar gráficos 3D y proporcionar acceso a tecnologías de GPU de próxima generación, como teselación, compatibilidad limitada con streaming de texturas y computación de uso general.
- DirectX Graphics Infrastructure (DXGI) para administrar dispositivos de pantalla locales y remotos y recursos de GPU, y proporcionar interoperabilidad entre DirectX y GDI.
Direct2D
Basado en Microsoft Direct3D 10, Direct2D ofrece a los desarrolladores de Win32 el modo inmediato, las API 2D independientes de la resolución que usan la eficacia del hardware gráfico de próxima generación, pero interoperan bien con las aplicaciones GDI/GDI+ actuales y las aplicaciones direct3D 10. Direct2D proporciona una representación 2D de alta calidad con un rendimiento superior a GDI y GDI+. Proporciona a los desarrolladores de Win32 un control más preciso sobre los recursos y su administración. (Consulta Direct2D).
DirectWrite
Muchas de las aplicaciones actuales necesitan admitir la representación de texto de alta calidad, las fuentes de esquema independientes de la resolución y la compatibilidad completa con el diseño y el texto Unicode. DirectWrite, un nuevo componente de DirectX, proporciona estas características y mucho más:
- Un sistema de diseño de texto independiente del dispositivo que mejora la legibilidad del texto en documentos y en la interfaz de usuario.
- Representación de texto ClearType de alta calidad, sub píxeles que pueden usar la tecnología de representación GDI, Direct2D o específica de la aplicación.
- Texto acelerado por hardware, cuando se usa con Direct2D.
- Compatibilidad con texto de varios formatos.
- Compatibilidad con las características de tipografía avanzadas de las fuentes OpenType .
- Compatibilidad con el diseño y la representación de texto en todos los idiomas admitidos.
- Diseño y representación compatibles con GDI.
El sistema de fuentes DirectWrite permite el uso de fuentes "cualquier fuente en cualquier lugar", donde los usuarios no tienen que realizar un paso de instalación independiente solo para usar una fuente y una jerarquía estructural mejorada de agrupación de fuentes para ayudar con la detección manual o mediante programación de fuentes. Las API admiten la medición, dibujo y pruebas de posicionamiento de texto de varios formatos. DirectWrite controla el texto en todos los idiomas admitidos para las aplicaciones globales y localizadas, basándose en la infraestructura de lenguaje clave que se encuentra en Windows 7. DirectWrite también proporciona API de representación de glifos de bajo nivel para los desarrolladores que desean realizar su propio diseño y procesamiento de glifos Unicode a glyph. (Consulte DirectWrite).
Windows Imaging Component
En Windows Vista, el componente de creación de imágenes de Windows introdujo un marco extensible para trabajar con imágenes y metadatos de imagen. Los formatos de imagen admitidos por windows Imaging Component incluyen JPEG, PNG y TIFF, y los formatos de metadatos admitidos incluyen XMP y EXIF. Con Windows 7, Windows Imaging Component amplía su cumplimiento normativo al proporcionar compatibilidad con la descodificación progresiva de imágenes, características PNG expandidas, metadatos GIF y metadatos que abarcan segmentos APPn . (Consulta Novedades de WIC en Windows 7).
Direct3D 11
Microsoft Direct3D 11 amplía la funcionalidad de la canalización de Direct3D 10 y proporciona juegos de Windows 7 y aplicaciones 3D de gama alta con acceso eficiente, sólido y escalable a la próxima generación de GPU y CPU de varios núcleos. Además de la funcionalidad que se encuentra en Direct3D 10, Direct3D 11 presenta varias características nuevas.
Las superficies de geometría y de alto orden ahora se pueden teselar para admitir contenido dinámico escalable y dinámico en representaciones de superficie de revisión y subdivisión.
Para hacer un buen uso de la potencia de procesamiento en paralelo disponible desde varios núcleos de CPU, el multithreading aumenta el número de llamadas de representación potenciales por fotograma mediante la distribución de las llamadas de aplicación, tiempo de ejecución y controlador entre varios núcleos. Además, la creación y administración de recursos se ha optimizado para el uso multiproceso, lo que permite una administración de texturas dinámicas más eficaz para el streaming.
Se han creado nuevos sombreadores de proceso de uso general para Direct3D 11. A diferencia de los sombreadores existentes, estas son extensiones de la canalización programable que permiten a la aplicación realizar más trabajo completamente en la GPU, independientemente de la CPU. DrawAuto, que se introdujo en Direct3D 10, se ha ampliado para interactuar con un sombreador de proceso.
Se han realizado varias mejoras en el lenguaje de sombreado de alto nivel (HLSL), como una forma limitada de vinculación dinámica en sombreadores para mejorar la complejidad de la especialización y construcciones de programación orientadas a objetos como clases e interfaces. (Consulte Novedades del SDK de DirectX de marzo de 2009).
Mejoras de Direct3D 10
Direct3D 10 incluye una canalización de gráficos rediseñada con fases de sombreador programables y objetos de estado inmutables para inicializar las fases de función fija. Los objetos de estado simplifican la canalización y mejoran el rendimiento al minimizar el número de cambios de estado necesarios. La programación de las fases del sombreador ahora ofrece extensiones de lenguaje de sombreado de alto nivel para admitir instrucciones de sombreador ilimitadas, recursos de sombreador generalizados y cálculos enteros y bit a bit.
La canalización también presenta la fase del sombreador de geometría, que descarga completamente desde la CPU a la GPU. Esta nueva fase permite crear geometría, transmitir los datos a la memoria y representar la geometría sin interacción con la CPU.
Otras mejoras están diseñadas específicamente para un rendimiento más rápido. La representación predejada realiza la selección de oclusión para reducir la cantidad de geometría que se representa. Las API de creación de instancias pueden reducir drásticamente la cantidad de geometría que se debe transferir a la GPU mediante el dibujo de varias instancias de objetos similares. Las matrices de texturas permiten que la GPU realice el intercambio de texturas sin intervención de la CPU.
Se han realizado varias adiciones a Direct3D 10 y Direct3D 11 para ampliar la gama de configuraciones que se pueden destinar a estas API. La Plataforma de rasterización avanzada (WARP) de Windows implementa una representación rápida y escalable de CPU de varios núcleos para Direct3D 10, lo que permite la representación gráfica completa en sistemas sin hardware gráfico. La adición de nuevos "niveles de características", denominados específicamente Direct3D 10 Nivel 9, permiten que Direct3D 10 y Direct3D 11APIs impulsen el hardware de clase 9 de Microsoft Direct3D, ampliando el número de configuraciones que una aplicación direct3D 10 o Direct3D 11 puede dirigirse a casi todos los sistemas informáticos del mercado. (Consulta Gráficos de Direct3D 10).
Interoperabilidad de DirectX/GDI
En Windows Vista, el comportamiento de una aplicación que usa DirectX y GDI para representar en una superficie compartida es diferente en función de si DWM está activado o desactivado. Además, cuando DWM está activado, las aplicaciones que usan DirectX y GDI se comportan de forma diferente en Windows Vista que en Windows XP. Esto ha provocado que muchos ISV deshabiliten DWM al ejecutar sus aplicaciones en Windows Vista para garantizar un comportamiento coherente. Con las mejoras de DirectX en Windows 7, una aplicación ahora puede mezclar libremente DirectX y GDI sin deshabilitar DWM. Windows 7 también ofrece un rendimiento mejorado para escenarios que requieren interoperación entre DirectX y GDI mediante el uso de las API de Direct3D 10 más eficientes. (Consulte Introducción a la interoperación de Direct2D y GDI).