stringtranslate.com

Директ2D

Direct2D [1] — это интерфейс прикладного программирования (API) для векторной 2D- графики , разработанный Microsoft и реализованный в Windows 10 , [2] Windows 8 , Windows 7 и Windows Server 2008 R2 , а также Windows Vista и Windows Server 2008обновлением платформы). установлен). [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. или когда рендеринг графики выполняется на удаленном сервере, а графический результат отправляется обратно на клиентское устройство. Производительность Direct2D и использование памяти линейно масштабируются в зависимости от количества примитивов как в программном, так и в аппаратном обеспечении.

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

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

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

Директ2Д 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]

Директ2Д 1.2

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

Директ2Д 1.3

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

Выполнение

В своей статье 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 года, поскольку семейство графических процессоров Nvidia Kepler не поддерживает ее, тогда как 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 . [31]

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

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

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

Рекомендации

  1. ^ «Direct2D — приложения Win32» .
  2. ^ «Что нового в Direct2D и DirectWrite для Windows 10 (канал 9)» . Канал 9 . Проверено 3 декабря 2015 г.
  3. ^ «Обновлен Direct2D в марте DirectX SDK — Блог Тома — Домашняя страница сайта — Блоги TechNet» . blogs.technet.com. 24 марта 2009 г. Архивировано из оригинала 28 марта 2009 г. Проверено 26 декабря 2011 г.
  4. ^ "Директ2Д". MSDN . Проверено 26 декабря 2011 г.
  5. ^ ".net - Что такое "облегченный COM"?". Переполнение стека .
  6. ^ «Рендеринг текста с помощью Direct2D и DirectWrite — приложений Win32» .
  7. ^ «Поддерживаемые форматы пикселей и альфа-режимы — приложения Win32» .
  8. ^ «Улучшения функций DirectX в Windows 8 — драйверы Windows» .
  9. ^ ab «Windows с C++ — знакомство с Direct2D 1.1». Msdn.microsoft.com. 02 мая 2014 г. Проверено 9 августа 2014 г.
  10. ^ «Обновление платформы для Windows 7 (Windows)» . Msdn.microsoft.com . Проверено 9 августа 2014 г.
  11. ^ Пуя Эймандар (2013). Программирование игр в DirectX 11.1 . Packt Publishing Ltd. с. 45. ИСБН 978-1-84969-481-0.
  12. ^ "Блоги разработчиков".
  13. ^ «Что нового в приложениях Direct2D — Win32» .
  14. ^ «Обзор реализаций геометрии — приложения Win32» .
  15. ^ «Эффекты (Direct2D) — приложения Win32» .
  16. ^ «Встроенные эффекты — приложения Win32» .
  17. ^ «Как применять эффекты к примитивам — приложения Win32» .
  18. ^ Килгард, Марк Дж. (2012). «Рендеринг пути с ускорением графического процессора». Транзакции ACM с графикой . 31 (6): 1–10. дои : 10.1145/2366145.2366191. S2CID  12967014.
  19. ^ abc Роб Коупленд, при участии Шрирама Субраманиана, Дэна Маклахлана, Кама ВедБрата, Стива Лима и Джианье Лу, а также введение Стивена Синофски Аппаратное обеспечение, ускоряющее все: графика Windows 8
  20. ^ «Словная война между NVIDIA и AMD из-за поддержки DirectX 11.1 продолжается» . Аппаратные Кэнакс. 17 декабря 2012 г. Проверено 9 августа 2014 г.
  21. ^ «Предоставьте нам поддержку драйвера DX11.1 на картах DX11. Для dx11.1 не требуется нового оборудования» . NVIDIA .
  22. ^ «Поддержка API DirectX Fermi и Kepler | 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. Тим, 11 августа 2010 г. Следите за Тимом в Твиттере (11 августа 2010 г.). «Firefox 4 такой же психоделический, как IE9 с поддержкой Direct2D «ITWriting Тима Андерсона». Itwriting.com . Проверено 6 августа 2014 г. {{cite web}}: |author=имеет общее имя ( справка )CS1 maint: несколько имен: список авторов ( ссылка ) CS1 maint: числовые имена: список авторов ( ссылка )
  26. ^ Шенкленд, Стивен (25 марта 2014 г.). «В Firefox 4 beta 4 добавлено аппаратное ускорение». CNET . Проверено 6 августа 2014 г.
  27. ^ «Mozilla бросает вызов Року по поводу новой жесткости Microsoft • The Register» . www.theregister.com .
  28. Опубликовано 27 ноября 2009 г. Гаретом Халфакри (27 ноября 2009 г.). «Firefox 3.7 получает поддержку Direct2D». bit-tech.net . Проверено 9 августа 2014 г.{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  29. ^ «Графические элементы» Архив блога » Рендеринг текста DirectWrite в Firefox 6» . Блог.mozilla.org. 11 августа 2011 г. Архивировано из оригинала 10 августа 2014 г. Проверено 9 августа 2014 г.
  30. ^ «Композитинг с ускорением графического процессора в Chrome — проекты Chromium» . Проверено 6 августа 2014 г.
  31. ^ Баклер, Крейг (20 декабря 2011 г.). «Как включить WebGL для заблокированных видеокарт в Firefox» . Проверено 21 октября 2019 г.
  32. ^ Брайт, Питер (24 июля 2012 г.). «Ускорение графического процессора в Windows 8: хорошие новости для Metro». Арс Техника . Проверено 9 августа 2014 г.
  33. ^ «Office принимает новую технологию отображения Windows - Мюррей Сарджент: Математика в Office - Домашняя страница сайта - Блоги MSDN» . Блоги.msdn.com. 29 июля 2012 г. Проверено 9 августа 2014 г.

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