Поделиться через


О Direct2D

В этом разделе представлен Direct2D, API, который предоставляет разработчикам Win32 возможность выполнять задачи отрисовки графики с более высокими производительностью и качеством визуализации.

Что такое Direct2D?

Direct2D — это аппаратно-ускоренный, немедленный режим 2-D графического API, который обеспечивает высокую производительность и высококачественную отрисовку для 2-D геометрии, растровых изображений и текста. API Direct2D предназначен для взаимодействия с существующим кодом, использующим GDI, GDI+или Direct3D.

Direct2D предназначен в первую очередь для использования следующими классами разработчиков:

  • Разработчики крупных, корпоративных, нативных приложений.
  • Разработчики, создающие наборы средств управления и библиотеки для использования подчиненными разработчиками.
  • Разработчики, которым требуется серверный рендеринг 2-D графики.
  • Разработчики, использующие графику Direct3D и нуждающиеся в простой, высокопроизводительной отрисовке 2-D и текста для меню, элементов пользовательского интерфейса и HUD.

Почему Direct2D?

Основными мотивациями для создания нового 2-D графического API в Microsoft Windows являются следующие:

  • Чтобы идти в ногу с увеличивающейся степенью визуального богатства, к которому привыкли пользователи Windows.
  • Чтобы разработчики могли писать 2-D код отрисовки, масштабируемый непосредственно с оборудованием обработки графики компьютера, на котором он работает.
  • Чтобы разработчики могли писать код для отрисовки 2-D графики, которая может выполняться в контексте службы.

В последние годы конечные пользователи начали ожидать большей визуальной точности в цифровых интерфейсах. Эта тенденция отражается в потребительской электронике. GPS-устройства, устройства воспроизведения мультимедиа, мобильные телефоны и цифровые камеры обеспечивают постоянно богатый опыт годом за годом. Эта тенденция также можно увидеть в разнообразии графического содержимого в фильмах, телевидении, видеоиграх и в Интернете. Чтобы идти в ногу с этими изменениями, разработчиков постоянно просят поднять их текущие приложения для Windows на следующий уровень визуального богатства.

Графические процессоры на современных компьютерах с Windows также постоянно развиваются, благодаря прогрессу в графике видеоигр и частях windows, таких как Windows Media Center и Aero. Некоторые приложения Windows могут воспользоваться современными GPU с помощью Microsoft Direct3D и Windows Presentation Foundation (WPF). Хотя Direct3D обслуживает высокопроизводительные трехмерные графические приложения и WPF решает потребности разработчиков .NET, существуют пробелы для разработчиков, имеющих большие базы кода отрисовки на основе GDI и GDI+ или которые хотят включить высококачественную графику 2-D в приложения на основе Direct3D.

Наконец, потребность в графическом API, который может использоваться в службе, стала новым требованием для разработчиков, работающих в корпоративных и веб-сценариях разработки. Существующие API-интерфейсы рендеринга ориентированы на отрисовку на стороне клиента в рамках одной пользовательской сессии. Таким образом, они могут уступать в надёжности и масштабируемости при использовании в сервисном контексте. Для решения этой проблемы требуется новый API.

Высокая производительность с максимальной доступностью

Direct2D — это библиотека пользовательского режима, созданная с помощью API Direct3D 10.1. Это означает, что приложения Direct2D получают преимущества от аппаратного ускорения рендеринга на современных повсеместно используемых GPU. Аппаратное ускорение также достигается на более ранних устройствах с Direct3D 9 с помощью рендеринга на уровне Direct3D 10-level-9. Это сочетание обеспечивает отличную производительность графического оборудования на существующих компьютерах с Windows.

Заметка

Начиная с Windows 8, Direct2D создается с помощью API Direct3D 11.1.

 

На следующей схеме показана многоуровневая архитектура Direct2D.

схема многоуровневой архитектуры direct2d

В сценариях, когда использование аппаратного ускорения невозможно, Direct2D включает высокопроизводительный растризатор программного обеспечения. При отрисовке в программном обеспечении приложения, использующие Direct2D, испытывают значительно более высокую производительность отрисовки, чем с GDI+, при схожем визуальном качестве. Растеровщик программного обеспечения также предназначен для использования в контексте сервиса.

Содержимое, отображаемое с помощью Direct2D, также можно отображать удаленно с помощью инфраструктуры протокола удаленного рабочего стола (RDP) в операционной системе Windows 7. Разработчики могут выбрать, обрабатывается ли отрисовка графическим процессором на компьютере, подключенном к дисплею, или отрисовка выполняется локально и передается в виде растровых изображений. Этот выбор можно сделать на основе требуемой скорости заполнения и количества графических примитивов, которые отрисовываются. При запуске операционной системы, предшествующей Windows 7, удаленная отрисовка дисплея выполняется путем передачи растровых изображений по сети.

Предоставляя единый API, который объединяет производительность Direct3D и высокий уровень доступности, предоставляя резервный доступ к программному обеспечению, удаленному рабочему столу и отрисовке служб, Direct2D позволяет разработчикам иметь единую реализацию для высокопроизводительной отрисовки во многих различных сценариях.

Качество визуальных элементов

Приложения, использующие Direct2D для графики, могут обеспечить более высокое качество визуализации, чем то, что можно достичь с помощью GDI. Direct2D использует сглаживание примитивов для обеспечения более гладких кривых и линий в отрисованном содержимом. Существует также полная поддержка прозрачности и альфа-смешивания при отрисовке 2-D примитивов. Приведенные ниже изображения сравнивают псевдонимированное содержимое, отображаемое с помощью GDI (слева) с антиалиасным содержимым, отображаемым Direct2D (справа).

иллюстрация кривых и линий, которые отрисовываются в GDI и в Direct2D

Разработчики могут задать отрисовку векторной графики с использованием сглаживания. Это используется в сценариях, когда требуется привязка к жестким границам пикселей, например, для элементов пользовательского интерфейса, таких как указатели или линейки; если необходимо соответствовать стилю выходных данных GDI; или если в процессе отрисовки будет применяться многоуровневое сглаживание или другой механизм.

Взаимодействие

Интеграция отрисовки с использованием Direct2D становится проще для разработчиков благодаря взаимодействию на уровне поверхности с GDI и Direct3D. Приложения, которые отрисовывают содержимое в основном с помощью GDI, GDI+ или Direct3D, могут начать с использования Direct2D для отрисовки определенных областей приложения, а с течением времени перейти к модели, в которой отрисовка выполняется главным образом через Direct2D, используя GDI главным образом для подключаемых модулей или устаревшей расширяемости.

Direct2D также упрощает использование DirectWrite для создания высококачественного текста и расширенных возможностей обработки изображений компонента обработки изображений Microsoft Windows (WIC).

Дополнительные сведения о взаимодействии Direct2D см. в разделе взаимодействия пакета SDK Direct2D.

Сводка

Microsoft Direct2D позволяет разработчикам создавать 2-D графические функции в своих приложениях, которые обеспечивают улучшенное качество визуального элемента по сравнению с GDI, а также характеристики производительности, масштабируемые с помощью современных GPU. Модель взаимодействия Direct2D позволяет разработчикам выборочно переносить части приложения наряду с отрисовкой на основе GDI, GDI+или Direct3D.

Быстрое начало работы с Direct2D для Windows 8

Обзор API Direct2D