stringtranslate.com

Direct2D

Direct2D [1] — это интерфейс программирования приложений (API) для двухмерной векторной графики , разработанный корпорацией Microsoft и реализованный в Windows 10 , [2] Windows 8 , Windows 7 и Windows Server 2008 R2 , а также Windows Vista и Windows Server 2008 (с установленным Platform Update ). [3]

Direct2D использует аппаратное ускорение через графический процессор ( GPU ), который находится в совместимых графических картах в персональных компьютерах, планшетах, смартфонах и современных графических устройствах. Он предлагает высокое визуальное качество и быструю производительность рендеринга, сохраняя при этом полную совместимость с классическими графическими API Win32, такими как GDI /GDI+, и современными графическими API, такими как Direct3D . [4]

Обзор

Direct2D — это API на основе собственного кода на основе C++ , который может вызываться управляемым кодом и использует подход «легкого COM » [5], как и Direct3D , с минимальным количеством абстракций. Однако, в отличие от WPF и аналогично GDI/GDI+, Direct2D — это API рендеринга «немедленного режима» с простыми вызовами BeginDraw/Draw/EndDraw; Direct2D не имеет понятия «сцены» и не использует сохраненные древовидные структуры, а состояние рендеринга сохраняется между вызовами отрисовки.

Direct2D может минимизировать использование ЦП и использовать аппаратный рендеринг на графической карте с минимальной поддержкой Direct3D Feature Level 9 с драйверами WDDM 1.1 . Приложения могут использовать его исключительно с ЦП, так называемый программный рендеринг, используя его в сочетании с WARP10 в ситуациях, когда аппаратные возможности недоступны, например, при запуске на устройстве с минимальной поддержкой ГП, в терминальной службе , сеансе Windows 0 или когда графический рендеринг выполняется на удаленном сервере с графическим результатом, отправляемым обратно на клиентское устройство. Производительность Direct2D и использование памяти масштабируются линейно с примитивными числами как в программном обеспечении, так и в оборудовании.

Direct2D [6] [7] поддерживает высококачественный рендеринг со следующими ключевыми функциями:

Direct2D обеспечивает полную совместимость с GDI, GDI+ и позволяет выполнять рендеринг на поверхность Direct3D и из нее, а также в контекст устройства GDI/GDI+ (HDC) и из него. Его можно эффективно использовать вместе с компонентом Windows Imaging Component (WIC) для кодирования/декодирования изображений и с DirectWrite для форматирования текста и обработки шрифтов. Такая совместимость позволяет разработчикам постепенно заменять критические пути кода кодом Direct2D без необходимости переделывать весь исходный код. В период Windows 10 компания Microsoft разработала проект с открытым исходным кодом под названием Win2D для дальнейшего упрощения использования Direct2D и DirectWrite в приложении универсальной платформы Windows (UWP). Win2D — это высокоэффективная оболочка WinRT для Direct2D и DirectWrite, разработанная с нуля для бесшовной интеграции с элементом управления XAML Canvas, сохраняя при этом мощь базовой графической подсистемы.

Последующие версии

Direct2D 1.1

Обновленная версия Direct2D была выпущена вместе с Windows 8 в октябре 2012 года. [8] Она также была перенесена в Windows 7 SP1 (но не в Windows Vista) через обновление платформы Windows 7. [ 9] [10] [11] Первоначальная версия Direct2D была привязана к DirectX 11 (на аппаратном уровне используется Direct3D до версии 10.1), тогда как эта версия Direct2D интегрируется с DirectX 11.1. [9] Windows 8 также добавила взаимодействие между XAML и Direct2D вместе с компонентами Direct3D, которые можно смешивать в приложении. [12]

Direct2D 1.2

В октябре 2013 года в Direct2D с выходом Windows 8.1 были добавлены новые функции : [13] реализация геометрии, [14] API эффектов Direct2D, [15] [16] [17] API списка команд, многопоточные API, приоритет рендеринга для каждого устройства, поддержка изображений JPEG YCbCr для уменьшения объема занимаемой памяти и поддержка форматов блочного сжатия (файлы DDS).

Direct2D 1.3

Выпуск Windows 10 в июле 2015 года принес важные обновления и новые функции Direct2D, такие как улучшение производительности рендеринга масштабируемого текста без растеризации шрифта , возможность загрузки необходимого шрифта из облака по запросу без необходимости установки шрифта, оптимизация для более быстрой загрузки изображений и рендеринга эффектов изображений, а также более сложный способ применения градиентной кисти с использованием 2D-сетки из градиентных участков. В этом выпуске также было представлено совершенно новое расширение API для поддержки цифровых чернил, которое активно используется браузером Microsoft Edge , а также элементом управления XAML холста чернил .

Выполнение

В своей статье 2012 года о конкурирующем расширении OpenGL для рендеринга NV-путей Марк Килгард и Джефф Больц объясняют (и критикуют) внутреннее устройство Direct2D следующим образом: «Direct2D работает, преобразуя пути на ЦП, а затем выполняя ограниченную трапециевидную тесселяцию каждого пути. Результатом является набор трапеций в пиксельном пространстве и дополнительная затененная геометрия для вычисления дробного покрытия для левого и правого краев трапеций. Эти трапеции и затененная геометрия затем растеризуются графическим процессором. Результирующая производительность, как правило, лучше, чем при подходах, полностью основанных на ЦП, и не требует вспомогательного хранилища для состояния мультисэмпла или трафарета ; Direct2D выполняет рендеринг непосредственно в буфер кадра с псевдонимами с надлежащим образом сглаженными результатами. Основным недостатком Direct2D является то, [что] конечная производительность определяется не графическим процессором (выполняющим довольно тривиальную растеризацию), а скорее центральным процессором, выполняющим преобразование и трапециевидную тесселяцию каждый путь и проверка Direct3D работают." [18]

В июле 2012 года команда Windows 8 опубликовала следующее в блоге Стивена Синофски : «Чтобы улучшить производительность рендеринга геометрии в Windows 8, мы сосредоточились на снижении затрат ЦП, связанных с тесселяцией, двумя способами. Во-первых, мы оптимизировали нашу реализацию тесселяции при рендеринге простых геометрий, таких как прямоугольники, линии, скругленные прямоугольники и эллипсы». [19] Эти общие оптимизации, как утверждается, улучшают производительность в диапазоне от 184% до 438% в зависимости от примитива. В сообщении говорилось: «Во-вторых, для повышения производительности при рендеринге нерегулярной геометрии (например, географических границ на карте) мы используем новую функцию графического оборудования под названием Target Independent Rasterization , или TIR. TIR позволяет Direct2D тратить меньше циклов ЦП на тесселяцию, поэтому он может быстрее и эффективнее давать инструкции по рисованию графическому процессору, не жертвуя визуальным качеством. TIR доступен в новом оборудовании графического процессора, разработанном для Windows 8, которое поддерживает DirectX 11.1». [19] За этим последовал бенчмарк с использованием около 15 SVG , заявляющий об улучшении производительности в диапазоне от 151% до 523%. Раздел заключил: «Мы тесно сотрудничали с нашими партнерами по графическому оборудованию для разработки TIR. Радикальные улучшения стали возможны благодаря этому партнерству. Аппаратное обеспечение DirectX 11.1 уже сегодня на рынке, и мы работаем с нашими партнерами, чтобы убедиться, что больше продуктов с поддержкой TIR будут широко доступны». [19]

Функция TIR была среди тех, которые вызвали «войну слов» между Nvidia и AMD около декабря 2012 года, потому что семейство графических процессоров Kepler от Nvidia не поддерживает ее, тогда как GCN от AMD поддерживает. [20] В ответ на требования клиентов сотрудник службы поддержки Nvidia сообщил, что TIR не может быть просто реализована на уровне драйвера, а требует нового оборудования; [21] [22] архитектура Maxwell 2 , представленная в сентябре 2014 года, является таким оборудованием. [23]

В Windows 8.1 Direct2D может использовать аппаратные тесселяторы Direct3D11, но только в сочетании с D2D1_FILL_MODE_ALTERNATE. Если используется другой режим заполнения (например D2D1_FILL_MODE_WINDING), то Direct2D возвращается к тесселяции на ЦП, но по-прежнему использует TIR для сглаживания (если TIR доступен). Поскольку аппаратная тесселяция доступна в базовом Direct3D11 (не обязательно 11.1), Microsoft заявила о значительном улучшении производительности с Direct2D в Windows 8.1 (по сравнению с Windows 8) на оборудовании без TIR. [24]

Использование и производительность

Internet Explorer 9 и более поздние версии используют Direct2D и DirectWrite для повышения производительности и визуального качества. [25] [26] [27] Поддержка Direct2D была добавлена ​​в альфа-версию Firefox 3.7, что примерно удвоило скорость рендеринга. [28] (Firefox 4 также добавил поддержку DirectWrite, но она была сделана нестандартной для некоторых шрифтов в Firefox 7 из-за жалоб пользователей на качество рендеринга. [29] Google Chrome использует собственную 2D-библиотеку под названием Skia , которая, в свою очередь, выполняет рендеринг через ANGLE в Windows. [30] ) В Firefox 70.0 на старом оборудовании Direct2D отключается на старых графических драйверах, занесенных в черный список, если в них отсутствуют функции, а область затемняется, например, в Google Maps . [31]

Питер Брайт из Ars Technica летом 2012 года отметил, что «большинство настольных приложений не используют Direct2D». [32]

Microsoft Office 2013 поддерживает Direct2D+DirectWrite или GDI+ Uniscribe для визуализации и типографики. [33]

Смотрите также

Ссылки

  1. ^ «Direct2D — приложения Win32».
  2. ^ "Что нового в Direct2D и DirectWrite для Windows 10 (канал 9)". Канал 9 . Получено 2015-12-03 .
  3. ^ "Обновленный Direct2D в марте DirectX SDK - Блог Тома - Главная страница сайта - Блоги TechNet". blogs.technet.com. 2009-03-24. Архивировано из оригинала 2009-03-28 . Получено 2011-12-26 .
  4. ^ "Direct2D". MSDN . Получено 2011-12-26 .
  5. ^ ".net - Что такое "легкий COM"?". Stack Overflow .
  6. ^ «Рендеринг текста с помощью Direct2D и DirectWrite — приложения Win32».
  7. ^ «Поддерживаемые форматы пикселей и альфа-режимы — приложения Win32».
  8. ^ «Улучшения функций DirectX в Windows 8 — драйверы Windows».
  9. ^ ab "Windows с C++ - Знакомство с Direct2D 1.1". Msdn.microsoft.com. 2014-05-02 . Получено 2014-08-09 .
  10. ^ "Обновление платформы для Windows 7 (Windows)". Msdn.microsoft.com . Получено 2014-08-09 .
  11. ^ Pooya Eimandar (2013). DirectX 11.1 Программирование игр . Packt Publishing Ltd. стр. 45. ISBN 978-1-84969-481-0.
  12. ^ "DevBlogs".
  13. ^ «Что нового в Direct2D — приложения Win32».
  14. ^ «Обзор реализаций геометрии — приложения Win32».
  15. ^ «Эффекты (Direct2D) — приложения Win32».
  16. ^ «Встроенные эффекты — приложения Win32».
  17. ^ «Как применять эффекты к примитивам — приложения Win32».
  18. ^ Килгард, Марк Дж. (2012). «GPU-ускоренная визуализация пути». ACM Transactions on Graphics . 31 (6): 1–10. doi :10.1145/2366145.2366191. S2CID  12967014.
  19. ^ abc Роб Коупленд, при участии Шрирама Субраманиана, Дэна Маклахлана, Кама Ведбрата, Стива Лима и Цзянье Лу, и введение Стивена Синофски Аппаратное ускорение всего: графика Windows 8
  20. ^ "Война слов между NVIDIA и AMD по поводу поддержки DirectX 11.1 продолжается". Hardware Canucks. 2012-12-17 . Получено 2014-08-09 .
  21. ^ "Дайте нам поддержку драйвера DX11.1 на картах DX11. Для dx11.1 не требуется никакого нового оборудования". NVIDIA .
  22. ^ "Поддержка API Fermi и Kepler DirectX | NVIDIA". nvidia.custhelp.com .
  23. ^ Смит, Райан. «Обзор NVIDIA GeForce GTX 980: Maxwell Mark 2». www.anandtech.com .
  24. ^ http://channel9.msdn.com/Events/Build/2013/3-191 19:00 до 20:00 и 55:00 до 56:30
  25. ^ tim, 11 августа 2010 г. Подпишитесь на tim в Twitter (2010-08-11). «Firefox 4 такой же психоделический, как IE9 с включенным Direct2D « ITWriting Тима Андерсона». Itwriting.com . Получено 2014-08-06 . {{cite web}}: |author=имеет общее название ( помощь )CS1 maint: несколько имен: список авторов ( ссылка ) CS1 maint: числовые имена: список авторов ( ссылка )
  26. ^ Шенкленд, Стивен (2014-03-25). "Firefox 4 beta 4 добавляет аппаратное ускорение". CNET . Получено 2014-08-06 .
  27. ^ "Mozilla бросает Roc на новую жесткость Microsoft • The Register". www.theregister.com .
  28. Опубликовано 27 ноября 2009 года Гаретом Халфакри (27.11.2009). "Firefox 3.7 получает поддержку Direct2D". bit-tech.net . Получено 09.08.2014 .{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  29. ^ "Graphic bits » Архив блога » DirectWrite Text Rendering in Firefox 6". Blog.mozilla.org. 2011-08-11. Архивировано из оригинала 2014-08-10 . Получено 2014-08-09 .
  30. ^ "Ускоренная компоновка на GPU в Chrome - Проекты Chromium" . Получено 2014-08-06 .
  31. ^ Баклер, Крейг (2011-12-20). «Как включить WebGL для заблокированных видеокарт в Firefox» . Получено 21 октября 2019 г.
  32. ^ Брайт, Питер (24.07.2012). «Ускорение графического процессора в Windows 8: хорошие новости для Metro». Ars Technica . Получено 09.08.2014 .
  33. ^ "Office принимает новую технологию отображения Windows - Мюррей Сарджент: Математика в Office - Главная страница сайта - Блоги MSDN". Blogs.msdn.com. 2012-07-29 . Получено 2014-08-09 .

Внешние ссылки