stringtranslate.com

Direct2D

Direct2D [1] es una interfaz de programación de aplicaciones (API) de gráficos vectoriales 2D diseñada por Microsoft e implementada en Windows 10 , [2] Windows 8 , Windows 7 y Windows Server 2008 R2 , y también Windows Vista y Windows Server 2008 (con actualización de plataforma ). instalado). [3]

Direct2D aprovecha la aceleración de hardware a través de la unidad de procesamiento de gráficos ( GPU ) que se encuentra en las tarjetas gráficas compatibles en computadoras personales, tabletas, teléfonos inteligentes y dispositivos gráficos modernos. Ofrece alta calidad visual y rendimiento de renderizado rápido al tiempo que mantiene la interoperabilidad total con las API de gráficos Win32 clásicas, como GDI /GDI+, y las API de gráficos modernas, como Direct3D . [4]

Descripción general

Direct2D es una API de código nativo basada en C++ que se puede llamar mediante código administrado y utiliza un enfoque " COM ligero" [5] al igual que Direct3D , con una cantidad mínima de abstracción. Sin embargo, a diferencia de WPF y de manera similar a GDI/GDI+, Direct2D es una API de renderizado en "modo inmediato" con llamadas simples a BeginDraw/Draw/EndDraw; Direct2D no tiene el concepto de "escena" y no utiliza estructuras de árbol retenidas, y el estado de representación se conserva entre llamadas de dibujo.

Direct2D puede minimizar el uso de la CPU y utilizar la representación de hardware en una tarjeta gráfica con soporte mínimo de Direct3D Feature Level 9 con controladores WDDM 1.1 . Las aplicaciones pueden optar por usarlo exclusivamente con CPU, el llamado renderizado de software, usándolo junto con WARP10 en situaciones en las que la capacidad del hardware no está disponible, como cuando se ejecuta dentro de un dispositivo con soporte mínimo de GPU, bajo servicio de terminal , sesión de Windows. 0 , o cuando la representación de gráficos se realiza en un servidor remoto y el resultado gráfico se envía de vuelta al dispositivo cliente. El rendimiento de Direct2D y el uso de memoria escalan linealmente con recuentos primitivos tanto en software como en hardware.

Direct2D [6] [7] admite renderizado de alta calidad con las siguientes características clave:

Direct2D permite una interoperabilidad total con GDI, GDI+ y permite la renderización hacia y desde una superficie Direct3D, así como hacia y desde un contexto de dispositivo (HDC) GDI/GDI+. Se puede utilizar eficazmente junto con Windows Imaging Component (WIC) para codificar/decodificar imágenes y con DirectWrite para formatear texto y procesar fuentes. Esta interoperabilidad permite a los desarrolladores reemplazar gradualmente las rutas de código críticas con código Direct2D sin la necesidad de revisar todo su código fuente. En el período de Windows 10, Microsoft desarrolló un proyecto de código abierto llamado Win2D para simplificar aún más el uso de Direct2D y DirectWrite en la aplicación de la Plataforma universal de Windows (UWP). Win2D es un contenedor WinRT altamente eficiente de Direct2D y DirectWrite diseñado desde cero para integrarse perfectamente con el control de XAML Canvas y al mismo tiempo preservar la potencia del subsistema de gráficos subyacente.

Versiones posteriores

Direct2D 1.1

Se lanzó una versión actualizada de Direct2D con Windows 8 en octubre de 2012. [8] También se actualizó a Windows 7 SP1 (pero no a Windows Vista) a través de la actualización de la plataforma Windows 7 . [9] [10] [11] La versión original de Direct2D estaba vinculada a DirectX 11 (en hardware, se usa hasta Direct3D 10.1), mientras que esta versión de Direct2D se integra con DirectX 11.1. [9] Windows 8 también agregó interoperabilidad entre XAML y Direct2D junto con componentes Direct3D, que se pueden mezclar en una aplicación. [12]

Direct2D 1.2

Se agregaron nuevas funciones a Direct2D con Windows 8.1 en octubre de 2013: [13] Realizaciones de geometría, [14] API de efectos de Direct2D, [15] [16] [17] API de lista de comandos, API de subprocesos múltiples, prioridad de representación por dispositivo, soporte para Imágenes JPEG YCbCr para reducir el uso de memoria y compatibilidad con formatos comprimidos en bloque (archivos DDS).

Direct2D 1.3

El lanzamiento de Windows 10 en julio de 2015 trajo actualizaciones importantes y nuevas características para Direct2D, como la mejora del rendimiento de la representación de texto escalable sin rasterización de fuentes , la capacidad de descargar la fuente necesaria desde la nube a pedido sin requerir el paso de instalación de fuentes, una optimización para una carga de imágenes y una representación de efectos de imagen más rápidas, y una forma más sofisticada de aplicar un pincel de degradado mediante el uso de malla 2D hecha de parches de degradado. Esta versión también introdujo una nueva extensión API para admitir tinta digital, que es altamente aprovechada por el navegador Microsoft Edge, así como por el control XAML del lienzo de tinta .

Implementación

En su artículo de 2012 sobre la extensión OpenGL de renderizado de rutas NV competitivas, Mark Kilgard y Jeff Bolz explican (y critican) los aspectos internos de Direct2D de la siguiente manera: "Direct2D opera transformando rutas en la CPU y luego realizando una teselación trapezoidal restringida de cada ruta. El resultado es un conjunto de trapecios de espacio de píxeles y geometría sombreada adicional para calcular la cobertura fraccionaria de los bordes izquierdo y derecho de los trapecios. Luego, la GPU rasteriza estos trapecios y geometría sombreada. El rendimiento resultante es generalmente mejor que el de la CPU. enfoques basados ​​​​y no requiere almacenamiento auxiliar para múltiples muestras o estado de plantilla ; Direct2D renderiza directamente en un framebuffer con alias con resultados correctamente suavizados. La principal desventaja de Direct2D es [que] el rendimiento final no está determinado por la GPU (haciendo una rasterización bastante trivial) sino más bien por. la CPU realiza la transformación y teselación trapezoidal de cada ruta y el trabajo de validación Direct3D." [18]

En julio de 2012, el equipo de Windows 8 publicó lo siguiente en el blog de Steven Sinofsky : "Para mejorar el rendimiento de representación geométrica en Windows 8, nos centramos en reducir el coste de CPU asociado con la teselación de dos maneras. Primero, optimizamos nuestra implementación de teselación al renderizar geometrías simples como rectángulos, líneas, rectángulos redondeados y elipses." [19] Estas optimizaciones de casos comunes afirmaban mejorar el rendimiento en el rango del 184% al 438%, dependiendo de la primitiva. La publicación continúa: "En segundo lugar, para mejorar el rendimiento al representar geometría irregular (por ejemplo, límites geográficos en un mapa), utilizamos una nueva función de hardware de gráficos llamada Target Independent Rasterization o TIR. TIR permite que Direct2D dedique menos ciclos de CPU a la teselación, por lo que puede dar instrucciones de dibujo a la GPU de manera más rápida y eficiente, sin sacrificar la calidad visual. TIR está disponible en el nuevo hardware de GPU diseñado para Windows 8 que admite DirectX 11.1". [19] A esto le siguió una prueba comparativa que utilizó unos 15 SVG , afirmando mejoras de rendimiento en el rango del 151% al 523%. La sección concluía: "Trabajamos estrechamente con nuestros socios de hardware de gráficos para diseñar TIR. Gracias a esa asociación se lograron mejoras espectaculares. El hardware DirectX 11.1 ya está en el mercado hoy y estamos trabajando con nuestros socios para asegurarnos de que haya más TIR- Los productos capaces estarán ampliamente disponibles". [19]

La función TIR estuvo entre las que provocaron una "guerra de palabras" entre Nvidia y AMD alrededor de diciembre de 2012, porque la familia de GPU Kepler de Nvidia no la admite, mientras que la GCN de AMD sí. [20] En respuesta a las demandas de los clientes, un miembro del personal de soporte de Nvidia publicó que TIR no se puede implementar simplemente a nivel de controlador, sino que requiere hardware nuevo; [21] [22] la arquitectura Maxwell 2 , introducida en septiembre de 2014, es ese tipo de hardware. [23]

En Windows 8.1 , Direct2D puede usar los teseladores de hardware Direct3D11, pero solo junto con D2D1_FILL_MODE_ALTERNATE. Si se usa otro modo de relleno (por ejemplo D2D1_FILL_MODE_WINDING), Direct2D recurre a la teselación en la CPU, pero aún usa TIR para suavizado (si TIR está disponible). Dado que la teselación de hardware está disponible en Direct3D11 base (no necesariamente 11.1), Microsoft afirmó mejoras significativas de rendimiento con Direct2D en Windows 8.1 (frente a Windows 8) en hardware que no es TIR. [24]

Usos y rendimiento

Internet Explorer 9 y versiones posteriores utilizan Direct2D y DirectWrite para mejorar el rendimiento y la calidad visual. [25] [26] [27] Se agregó compatibilidad con Direct2D en la versión alfa de Firefox 3.7, aproximadamente duplicando su velocidad de renderizado. [28] (Firefox 4 también agregó soporte DirectWrite, pero esto no fue predeterminado para algunas fuentes en Firefox 7 debido a quejas de los usuarios sobre la calidad de renderizado. [29] Google Chrome usa su propia biblioteca 2D llamada Skia , que a su vez renderiza a través de ANGLE en Windows [30] ) En Firefox 70.0, en hardware antiguo, Direct2D está desactivado en los controladores de gráficos antiguos incluidos en la lista negra si carecen de funciones y el área está bloqueada, por ejemplo, en Google Maps . [31]

Peter Bright, de Ars Technica , señaló en el verano de 2012 que "la mayoría de las aplicaciones de escritorio no utilizan Direct2D". [32]

Microsoft Office 2013 admite Direct2D+DirectWrite o GDI+ Uniscribe para visualización y tipografía. [33]

Ver también

Referencias

  1. ^ "Direct2D: aplicaciones Win32".
  2. ^ "Novedades de Direct2D y DirectWrite para Windows 10 (canal 9)". Canal 9 . Consultado el 3 de diciembre de 2015 .
  3. ^ "Direct2D actualizado en marzo DirectX SDK - Blog de Tom - Inicio del sitio - Blogs de TechNet". blogs.technet.com. 2009-03-24. Archivado desde el original el 28 de marzo de 2009 . Consultado el 26 de diciembre de 2011 .
  4. ^ "Direct2D". MSDN . Consultado el 26 de diciembre de 2011 .
  5. ^ ".net: ¿Qué es exactamente el" COM ligero "?". Desbordamiento de pila .
  6. ^ "Representación de texto con Direct2D y DirectWrite: aplicaciones Win32".
  7. ^ "Formatos de píxeles y modos Alpha admitidos: aplicaciones Win32".
  8. ^ "Mejoras en las funciones DirectX en Windows 8: controladores de Windows".
  9. ^ ab "Windows con C++: presentación de Direct2D 1.1". msdn.microsoft.com. 2014-05-02 . Consultado el 9 de agosto de 2014 .
  10. ^ "Actualización de plataforma para Windows 7 (Windows)". msdn.microsoft.com . Consultado el 9 de agosto de 2014 .
  11. ^ Pooya Eimandar (2013). Programación de juegos DirectX 11.1 . Packt Publishing Ltd. pág. 45.ISBN 978-1-84969-481-0.
  12. ^ "Blogs de desarrollo".
  13. ^ "Novedades de Direct2D: aplicaciones Win32".
  14. ^ "Descripción general de realizaciones de geometría: aplicaciones Win32".
  15. ^ "Efectos (Direct2D): aplicaciones Win32".
  16. ^ "Efectos integrados: aplicaciones Win32".
  17. ^ "Cómo aplicar efectos a primitivas: aplicaciones Win32".
  18. ^ Kilgard, Mark J. (2012). "Representación de rutas acelerada por GPU". Transacciones ACM sobre gráficos . 31 (6): 1–10. doi :10.1145/2366145.2366191. S2CID  12967014.
  19. ^ abc Rob Copeland, con contribuciones de Sriram Subramanian, Dan McLachlan, Kam VedBrat, Steve Lim y Jianye Lu, y una introducción de Steven Sinofsky Hardware que acelera todo: gráficos de Windows 8
  20. ^ "Continúa la guerra de palabras entre NVIDIA y AMD por la compatibilidad con DirectX 11.1". Canucks de hardware. 2012-12-17 . Consultado el 9 de agosto de 2014 .
  21. ^ "Bríndenos compatibilidad con el controlador DX11.1 en tarjetas DX11. No se requiere hardware nuevo para dx11.1". NVIDIA .
  22. ^ "Soporte de API DirectX de Fermi y Kepler | NVIDIA". nvidia.custhelp.com .
  23. ^ Smith, Ryan. "Revisión de NVIDIA GeForce GTX 980: Maxwell Mark 2". www.anandtech.com .
  24. ^ http://channel9.msdn.com/Events/Build/2013/3-191 19:00 a 20:00 y 55:00 a 56:30
  25. ^ Tim, el 11 de agosto de 2010. Siga a Tim en Twitter (11 de agosto de 2010). "Firefox 4 tan psicodélico como IE9 con Direct2D habilitado« ITWriting de Tim Anderson ". Itwriting.com . Consultado el 6 de agosto de 2014 . {{cite web}}: |author=tiene nombre genérico ( ayuda )Mantenimiento CS1: varios nombres: lista de autores ( enlace ) Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  26. ^ Shankland, Stephen (25 de marzo de 2014). "Firefox 4 beta 4 agrega aceleración de hardware". CNET . Consultado el 6 de agosto de 2014 .
  27. ^ "Mozilla critica a Roc por la nueva dureza de Microsoft • The Register". www.theregister.com .
  28. ^ Publicado el 27 de noviembre de 2009 por Gareth Halfacree (27 de noviembre de 2009). "Firefox 3.7 es compatible con Direct2D". bit-tech.net . Consultado el 9 de agosto de 2014 .{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  29. ^ "Bits gráficos» Archivo del blog »Representación de texto DirectWrite en Firefox 6". Blog.mozilla.org. 2011-08-11. Archivado desde el original el 10 de agosto de 2014 . Consultado el 9 de agosto de 2014 .
  30. ^ "Composición acelerada por GPU en Chrome: los proyectos Chromium" . Consultado el 6 de agosto de 2014 .
  31. ^ Escudo, Craig (20 de diciembre de 2011). "Cómo habilitar WebGL para tarjetas gráficas bloqueadas en Firefox" . Consultado el 21 de octubre de 2019 .
  32. ^ Brillante, Peter (24 de julio de 2012). "Aceleración de GPU de Windows 8: buenas noticias para Metro". Ars Técnica . Consultado el 9 de agosto de 2014 .
  33. ^ "Office adopta la nueva tecnología de visualización de Windows - Murray Sargent: Matemáticas en Office - Inicio del sitio - Blogs de MSDN". Blogs.msdn.com. 29 de julio de 2012 . Consultado el 9 de agosto de 2014 .

enlaces externos