Сведения о Direct2D

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

Что такое Direct2D?

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

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

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

Почему Direct2D?

Основными причинами создания нового API двухмерной графики в Microsoft Windows являются следующие:

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

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

Графические процессоры на современных компьютерах с Windows также постоянно развиваются, что обусловлено достижениями в области графики видеоигр и частью интерфейса Windows, такими как Windows Media Center и Aero. Некоторые приложения Windows могут использовать преимущества современных GPU с помощью Microsoft Direct3D и Windows Presentation Foundation (WPF). Хотя Direct3D обслуживает высокопроизводительные трехмерные графические приложения, а WPF отвечает потребностям разработчиков .NET, существуют пробелы для разработчиков, имеющих большие базы кода отрисовки кода на основе GDI и GDI+ или желающих включить высококачественную двухмерную графику в приложения на основе 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. Разработчики могут выбрать, обрабатывается ли отрисовка GPU на компьютере дисплея или отображается локально и передается в виде растровых рисунков. Этот выбор можно сделать на основе требуемой скорости заполнения и количества графических примитивов, которые отрисовываются. Если на компьютере с дисплеем установлена операционная система, более ранняя, чем Windows 7, удаленная отрисовка дисплея выполняется путем передачи растровых изображений по сети.

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

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

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

иллюстрация кривых и линий, отображаемых в gdi и direct2d

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

Совместимость

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

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

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

Сводка

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

Краткое руководство по Direct2D для Windows 8

Обзор API Direct2D