Direct2D

редактировать

Direct2D - это 2D векторная графика интерфейс прикладного программирования (API), разработанный Microsoft и реализованный в Windows 10, Windows 8, Windows 7 и Windows Server 2008 R2, а также Windows Vista и Windows Server 2008Обновление платформы установлено).

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

Содержание
  • 1 Обзор
  • 2 Последующие версии
    • 2.1 Direct2D 1.1
    • 2.2 Direct2D 1.2
    • 2.3 Direct2D 1.3
  • 3 Реализация
  • 4 Использование и производительность
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние links
Обзор

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

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

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

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

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 при сохранении мощи базовой графической подсистемы.

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

Direct2D 1.1

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

Direct2D 1.2

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

Direct2D 1.3

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

Реализация

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

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

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

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

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

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

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

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

См. также
Ссылки
Внешние ссылки

.

Последняя правка сделана 2021-05-17 08:13:43
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте