Direct2D - Direct2D

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

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

  • Качественный рендеринг субпиксельного текста через DirectWrite как для оттенков серого, так и для ClearType техника
  • Per-примитивный сглаживание
  • Безье геометрия рисовать и заливать
  • Богатые геометрические операции (например, Логические операции, расширение пути, очерчивание и т. д.)
  • Композитные слои
  • Примитивные режимы наложения (например, исходный код, исходное копирование, минимальное смешение и т. Д.)
  • Встроенные и настраиваемые эффекты изображения для настройки фотографий, графического преобразования и преобразования цвета
  • Градиент кисть и сетка
  • Список команд для буферизации и печати команд
  • Масштабируемый росчерк
  • Спрайт пакет для разработки игр

Direct2D обеспечивает полную совместимость с GDI, GDI + и позволяет выполнять рендеринг на поверхность Direct3D и из нее, а также в контекст устройства GDI / GDI + (HDC) и из него. Его можно эффективно использовать вместе с Компонент Windows Imaging (WIC) для кодирования / декодирования изображений и с DirectWrite для форматирования текста и обработки шрифтов. Такая совместимость позволяет разработчикам постепенно заменять критические пути кода кодом Direct2D без необходимости капитального ремонта всего исходного кода. Во временных рамках Windows 10 проект с открытым исходным кодом назывался Win2D был разработан Microsoft для дальнейшего упрощения использования 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

Новые функции были добавлены в Direct2D с помощью Windows 8.1 в октябре 2013 г .:[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%, в зависимости от примитива. В сообщении говорилось: «Во-вторых, для повышения производительности при визуализации нестандартной геометрии (например, географических границ на карте) мы используем новую функцию графического оборудования под названием Целевая независимая растеризация, или TIR. TIR позволяет Direct2D тратить меньше циклов ЦП на тесселяцию, поэтому он может быстрее и эффективнее передавать инструкции рисования графическому процессору без ущерба для визуального качества. TIR доступен в новом оборудовании GPU, разработанном для Windows 8, который поддерживает DirectX 11.1 ».[19] Затем последовал тест с использованием около 15 SVG, заявляя об улучшении производительности в диапазоне от 151% до 523%. В конце раздела говорилось: «Мы тесно сотрудничали с нашими партнерами по графическому оборудованию над разработкой TIR. Благодаря этому партнерству стали возможны кардинальные улучшения. Оборудование DirectX 11.1 уже присутствует на рынке сегодня, и мы работаем с нашими партнерами, чтобы обеспечить больше TIR- соответствующие продукты будут широко доступны ".[19]

Особенность МДП была среди тех, которые вызвали «словесную войну» между Nvidia и AMD примерно в декабре 2012 года, потому что Nvidia Семейство графических процессоров Kepler не поддерживает его, тогда как AMD GCN делает.[20] В ответ на запросы клиентов сотрудник службы поддержки Nvidia сообщил, что TIR не может быть просто реализован на уровне драйвера, но требует нового оборудования;[21][22] то Максвелл 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 была добавлена ​​в альфа версия из Fire Fox 3.7, примерно вдвое увеличив скорость рендеринга.[28] (Firefox 4 также добавил поддержку DirectWrite, но это было сделано не по умолчанию для некоторых шрифтов в Firefox 7 из-за жалоб пользователей на качество рендеринга.[29] Гугл Хром использует собственную 2D-библиотеку под названием Skia, который, в свою очередь, обрабатывает УГОЛ в Windows.[30]) В Fire Fox 70.0, на старом оборудовании Direct2D отключен на старых графических драйверах, занесенных в черный список, если в них отсутствуют функции и область затемнена, например. в Карты Гугл.[31]

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

Microsoft Office 2013 поддерживает Direct2D + DirectWrite или GDI +Не описывать для отображения и оформления.[33]

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

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

  1. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx
  2. ^ «Что нового в Direct2D и DirectWrite для Windows 10 (канал 9)». Канал 9. Получено 2015-12-03.
  3. ^ «Обновленный Direct2D в марте DirectX SDK - Блог Тома - Домашняя страница сайта - Блоги TechNet». blogs.technet.com. 2009-03-24. Получено 2011-12-26.
  4. ^ "Direct2D". MSDN. Получено 2011-12-26.
  5. ^ https://stackoverflow.com/questions/38174095/what-exactly-is-lightweight-com
  6. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/ff729481(v=vs.85).aspx
  7. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dd756766(v=vs.85).aspx
  8. ^ https://msdn.microsoft.com/en-us/library/windows/hardware/dn653328(v=vs.85).aspx#tir
  9. ^ а б «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. ^ Пуйя Эймандар (2013). DirectX 11.1 Программирование игр. Packt Publishing Ltd. стр. 45. ISBN  978-1-84969-481-0.
  12. ^ http://blogs.msdn.com/b/windowsappdev/archive/2012/03/15/combining-xaml-and-directx.aspx
  13. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh802478(v=vs.85).aspx
  14. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/dn363632(v=vs.85).aspx
  15. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh973240(v=vs.85).aspx
  16. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh706316(v=vs.85).aspx
  17. ^ https://msdn.microsoft.com/en-us/library/windows/desktop/hh973241(v=vs.85).aspx
  18. ^ Килгард, Марк Дж. (2012). «Рендеринг путей с ускорением на GPU». Транзакции ACM на графике. 31 (6): 1–10. Дои:10.1145/2366145.2366191.
  19. ^ а б c Роб Коупленд, при участии Шрирама Субраманиана, Дэна Маклахлана, Кам Ведбрата, Стива Лим и Джианье Лу, а также вступительное слово Стивена Синофски Аппаратное ускорение всего: графика Windows 8
  20. ^ «Словесная война между NVIDIA и AMD из-за поддержки DirectX 11.1 продолжается». Аппаратные Кэнакс. 2012-12-17. Получено 2014-08-09.
  21. ^ https://forums.geforce.com/default/topic/511499/geforce-drivers/give-us-dx11-1-driver-support-on-dx11-cards-no-new-hardware-is-required-for- dx11-1 / post / 3642626 / # 3642626
  22. ^ http://nvidia.custhelp.com/app/answers/detail/a_id/3196/~/fermi-and-kepler-directx-api-support
  23. ^ http://www.anandtech.com/show/8526/nvidia-geforce-gtx-980-review/4
  24. ^ http://channel9.msdn.com/Events/Build/2013/3-191 С 19:00 до 20:00 и с 55:00 до 56:30
  25. ^ Тим, 11 августа 2010 г. Следуйте за Тимом в Твиттере (2010-08-11). «Firefox 4 такой же психоделический, как и IE9 с включенным Direct2D« ITWriting Тима Андерсона ». Itwriting.com. Получено 2014-08-06.CS1 maint: несколько имен: список авторов (ссылка на сайт)
  26. ^ Шенкленд, Стивен (25 марта 2014 г.). «Firefox 4 beta 4 добавляет аппаратное ускорение». CNET. Получено 2014-08-06.
  27. ^ Mozilla отвергает Roc за новую жесткость Microsoft • The Register
  28. ^ Опубликовано 27 ноября 2009 г. Гаретом Халфакри (27 ноября 2009 г.). «Firefox 3.7 получает поддержку Direct2D». bit-tech.net. Получено 2014-08-09.
  29. ^ «Графические элементы» Архив блога »Отрисовка текста DirectWrite в 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». Получено 2019-10-21.
  32. ^ Брайт, Питер (2012-07-24). «Ускорение графического процессора в Windows 8: хорошие новости для Metro». Ars Technica. Получено 2014-08-09.
  33. ^ «Office принимает новую технологию отображения Windows - Мюррей Сарджент: математика в Office - главная страница - блоги MSDN». Blogs.msdn.com. 2012-07-29. Получено 2014-08-09.

внешняя ссылка