Директ2D
Директ2D [1] представляет собой 2D (API) векторной -графики интерфейс прикладного программирования , разработанный 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 , сеансе . 0 или когда рендеринг графики выполняется на удаленном сервере, а графический результат отправляется обратно на клиентское устройство. Производительность Direct2D и использование памяти линейно масштабируются в зависимости от количества примитивов как в программном, так и в аппаратном обеспечении.
Директ2D [6] [7] поддерживает высококачественный рендеринг со следующими ключевыми функциями:
- Высококачественная субпиксельная отрисовка текста с помощью DirectWrite оттенков серого и ClearType. для методов
- Попримитивное сглаживание
- Безье Рисование и заливка геометрии
- Богатые геометрические операции (например, логические операции , расширение пути, выделение и т. д.)
- Составные слои
- Примитивные режимы наложения (например, перекрытие источника, копирование источника, минимальное наложение и т. д.)
- Встроенные и пользовательские эффекты изображения для настройки фотографий, графического и цветового преобразования.
- Градиентная кисть и сетка
- Список команд для буферизации и печати команд
- Масштабируемый ход чернил
- Пакет спрайтов для разработки игр
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 работает путем преобразования путей в ЦП, а затем выполнения ограниченной трапециевидной тесселяции каждого пути. Результатом является набор трапеций в пиксельном пространстве и дополнительная затененная геометрия для вычисления дробного покрытия для левого и правого краев трапеций. Эти трапеции и затененная геометрия затем растеризуются графическим процессором. В результате производительность обычно лучше, чем полностью CPU. Основанные на подходах и не требующие вспомогательного хранилища для мультисэмплирования или состояния трафарета ; 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 Nvidia где-то в декабре 2012 года, поскольку семейство графических процессоров Kepler не поддерживает ее, тогда как AMD GCN поддерживает. [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]
Ars Technica отметил, что «большинство настольных приложений не используют Direct2D». Летом 2012 года Питер Брайт из [32]
Microsoft Office 2013 поддерживает Direct2D+DirectWrite или GDI+ Uniscribe для рендеринга дисплея и типографики. [33]
См. также
[ редактировать ]- ДиректХ
- Директ3D
- Cairo — кроссплатформенная библиотека векторной графики.
- OpenVG
- Простая и быстрая мультимедийная библиотека
- Старлинг Фреймворк
- Кварц 2D
Ссылки
[ редактировать ]- ^ «Direct2D — приложения Win32» .
- ^ «Что нового в Direct2D и DirectWrite для Windows 10 (канал 9)» . Канал 9 . Проверено 3 декабря 2015 г.
- ^ «Обновление Direct2D в марте DirectX SDK — Блог Тома — Главная страница сайта — Блоги TechNet» . blogs.technet.com. 24 марта 2009 г. Архивировано из оригинала 28 марта 2009 г. Проверено 26 декабря 2011 г.
- ^ «Директ2Д» . MSDN . Проверено 26 декабря 2011 г.
- ^ «.net — Что такое «облегченный COM»?» . Переполнение стека .
- ^ «Рендеринг текста с помощью Direct2D и DirectWrite — приложения Win32» .
- ^ «Поддерживаемые форматы пикселей и альфа-режимы — приложения Win32» .
- ^ «Улучшения функций DirectX в Windows 8 — драйверы Windows» .
- ↑ Перейти обратно: Перейти обратно: а б «Windows с C++ — знакомство с Direct2D 1.1» . Msdn.microsoft.com. 02 мая 2014 г. Проверено 9 августа 2014 г.
- ^ «Обновление платформы для Windows 7 (Windows)» . Msdn.microsoft.com . Проверено 9 августа 2014 г.
- ^ Пуя Эймандар (2013). Программирование игр в DirectX 11.1 . Packt Publishing Ltd. с. 45. ИСБН 978-1-84969-481-0 .
- ^ «Блоги разработчиков» .
- ^ «Что нового в приложениях Direct2D — Win32» .
- ^ «Обзор геометрических реализаций — приложения Win32» .
- ^ «Эффекты (Direct2D) — приложения Win32» .
- ^ «Встроенные эффекты — приложения Win32» .
- ^ «Как применять эффекты к примитивам — приложения Win32» .
- ^ Килгард, Марк Дж. (2012). «Рендеринг пути с ускорением графического процессора». Транзакции ACM с графикой . 31 (6): 1–10. дои : 10.1145/2366145.2366191 . S2CID 12967014 .
- ↑ Перейти обратно: Перейти обратно: а б с Роб Коупленд, при участии Шрирама Субраманиана, Дэна Маклахлана, Кама ВедБрата, Стива Лима и Джианье Лу, а также введение Стивена Синофски Аппаратное ускорение всего: графика Windows 8
- ^ «Словная война между NVIDIA и AMD по поводу поддержки DirectX 11.1 продолжается» . Аппаратные Кэнакс. 17 декабря 2012 г. Проверено 9 августа 2014 г.
- ^ «Предоставьте нам поддержку драйвера DX11.1 на картах DX11. Для dx11.1 не требуется никакого нового оборудования» . NVIDIA .
- ^ «Поддержка API DirectX Fermi и Kepler | NVIDIA» . nvidia.custhelp.com .
- ^ Смит, Райан. «Обзор NVIDIA GeForce GTX 980: Maxwell Mark 2» . www.anandtech.com .
- ^ http://channel9.msdn.com/Events/Build/2013/3-191 с 19:00 до 20:00 и с 55:00 до 56:30.
- ^ Тим, 11 августа 2010 г. Следите за Тимом в Твиттере (11 августа 2010 г.). «Firefox 4 такой же психоделический, как IE9 с включенным Direct2D «ITWriting Тима Андерсона» . Itwriting.com . Проверено 6 августа 2014 г.
{{cite web}}
:|author=
имеет общее имя ( справка ) CS1 maint: несколько имен: список авторов ( ссылка ) CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Шенкленд, Стивен (25 марта 2014 г.). «В Firefox 4 beta 4 добавлено аппаратное ускорение» . CNET . Проверено 6 августа 2014 г.
- ^ «Mozilla бросает вызов Року по поводу новой жесткости Microsoft • The Register» . www.theregister.com .
- ^ Опубликовано 27 ноября 2009 г. Гаретом Халфакри (27 ноября 2009 г.). «Firefox 3.7 получает поддержку Direct2D» . bit-tech.net . Проверено 9 августа 2014 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ «Графические элементы » Архив блога » Рендеринг текста DirectWrite в Firefox 6» . Блог.mozilla.org. 11 августа 2011 г. Архивировано из оригинала 10 августа 2014 г. Проверено 9 августа 2014 г.
- ^ «Композитинг с графическим процессором в Chrome — проекты Chromium» . Проверено 6 августа 2014 г.
- ^ Баклер, Крейг (20 декабря 2011 г.). «Как включить WebGL для заблокированных видеокарт в Firefox» . Проверено 21 октября 2019 г.
- ^ Брайт, Питер (24 июля 2012 г.). «Ускорение графического процессора в Windows 8: хорошие новости для Metro» . Арс Техника . Проверено 9 августа 2014 г.
- ^ «Office использует новую технологию отображения Windows — Мюррей Сарджент: математика в Office — главная страница сайта — блоги MSDN» . Блоги.msdn.com. 29 июля 2012 г. Проверено 9 августа 2014 г.
Внешние ссылки
[ редактировать ]- Главная страница Direct2D на MSDN со ссылками на руководство по программированию , новые возможности Windows 8.1 , совместимость с Direct3D и т. д.
- Блог ведущего разработчика Direct2D Томаса Олсена
- Блог разработчика Direct2D Тома Малкахи
- Windows 7: знакомство с Direct2D и DirectWrite — видео PDC 2008
- Пакет кода Windows API для Microsoft .NET Framework — позволяет разрабатывать приложения Direct2D в управляемом коде.
- Представляем Direct2D — выпуск журнала MSDN Magazine за июнь 2009 г.
- Рисование с помощью Direct2D — выпуск журнала MSDN за сентябрь 2009 г.
- API Direct2D для Microsoft .Net Framework 4. Архивировано 8 июля 2011 г. на Wayback Machine — API Direct2D для Microsoft .Net Framework 4.
- Приложение USPTO для независимой целевой растеризации
- Руководство по миграции на Direct2D 1.1 для разработчиков Windows 7
- Колонка Чарльза Петцольда о DirectX содержит несколько статей о Direct2D, начиная от вводных, таких как «Треугольники и тесселяция» или «Геометрии Direct2D и их манипуляции» , до более сложных, таких как «Рисование пальцами с геометриями Direct2D» , «2D-портал в трехмерный мир » и т. д.