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


Графика с высоким уровнем точности с помощью DirectX

Разработчики приложений Windows уже давно используют Microsoft DirectX для предоставления высококачественной трехмерной графики с аппаратным ускорением. Когда технология дебютировала в 1995 году, разработчики могли предоставлять высококачественную трехмерную графику для игр и инженерных приложений для геймеров и профессионалов, готовых платить дополнительно за трехмерную графическую доску. Теперь даже самые недорогие компьютеры включают в себя 3D-графическое оборудование.

Чтобы воспользоваться преимуществами этих графических возможностей, в Windows Vista появилась инфраструктура модели WDDM для DirectX, которая позволила нескольким приложениям и службам совместно использовать ресурсы графического модуля обработки (GPU). Диспетчер окон рабочего стола (DWM) использует эту технологию для анимации переключения задач в трехмерном режиме, предоставления динамических эскизов окон приложений и для создания эффектов стекла Windows Aero для классических приложений.

Windows 7 предоставляет разработчикам приложений еще больше графических возможностей. Благодаря новому набору DirectXAPIs разработчики Microsoft Win32 могут воспользоваться преимуществами последних инноваций в gpu, чтобы добавить в свои приложения быструю, масштабируемую, высококачественную двухмерную и трехмерную графику, текст и изображения. На новейших ЖК-дисплеях DirectXAPIs могут отображать содержимое рабочего стола и окна, используя глубину цвета более 8 бит на компонент цвета.

С помощью DirectX разработчики Win32 также могут использовать параллелизм GPU для вычислений общего назначения, таких как обработка изображений, и выполнять отрисовку на оборудовании DirectX 10, оборудовании DirectX 9, ЦП или на удаленном компьютере Windows. Эти технологии были разработаны для взаимодействия с интерфейсом графических устройств Windows (GDI) и Windows GDI+, гарантируя, что разработчики могут легко сохранить существующие инвестиции в код Win32. (См . раздел Новые возможности пакета SDK DirectX за март 2009 г.

Эти расширенные графические возможности предоставляются следующими API на основе COM:

  • Direct2D для рисования двухD-графики.
  • DirectWrite для упорядочения и отрисовки текста.
  • Компонент обработки образов Windows для обработки и отображения изображений.
  • Direct3D 10 для рисования трехмерной графики.
  • Direct3D 11 для рисования трехмерной графики и предоставления доступа к технологиям GPU следующего поколения, таким как тесселяции, ограниченная поддержка потоковой передачи текстур и вычисления общего назначения.
  • Графическая инфраструктура DirectX (DXGI) для управления локальными и удаленными устройствами отображения и ресурсами GPU, а также обеспечения взаимодействия между DirectX и GDI.

Direct2D

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

DirectWrite

Многие из современных приложений должны поддерживать высококачественную отрисовку текста, шрифты структур, не зависящие от разрешения, а также полную поддержку текста и макета в Юникоде. DirectWrite, новый компонент DirectX, предоставляет следующие функции и многое другое:

  • Независимая от устройства система разметки текста, которая улучшает удобочитаемость текста в документах и пользовательском интерфейсе.
  • Высококачественная, субпиксельная отрисовка текста ClearType , которая может использовать GDI, Direct2D или технологию отрисовки для конкретных приложений.
  • Текст с аппаратным ускорением при использовании с Direct2D.
  • Поддержка многоформатного текста.
  • Поддержка расширенных функций оформления шрифтов OpenType .
  • Поддержка макета и отрисовки текста на всех поддерживаемых языках.
  • Макет и отрисовка, совместимые с GDI.

Система шрифтов DirectWrite позволяет использовать шрифты "любой шрифт в любом месте", когда пользователям не нужно выполнять отдельный шаг установки только для использования шрифта, а также улучшена структурная иерархия группирования шрифтов для обнаружения шрифтов вручную или программно. API поддерживают измерение, рисование и проверку попадания многоформатного текста. DirectWrite обрабатывает текст на всех поддерживаемых языках для глобальных и локализованных приложений на основе основной языковой инфраструктуры Windows 7. DirectWrite также предоставляет низкоуровневые API-интерфейсы отрисовки глифов для разработчиков, которые хотят выполнить собственную обработку макета и преобразования юникода в глиф. (См. DirectWrite.)

Компонент обработки изображений Windows

В Windows Vista компонент обработки образов Windows представил расширяемую платформу для работы с изображениями и метаданными изображений. Форматы изображений, поддерживаемые компонентом обработки образов Windows, включают JPEG, PNG и TIFF, а поддерживаемые форматы метаданных — XMP и EXIF. В Windows 7 компонент обработки образов Windows расширяет соответствие стандартам, предоставляя поддержку прогрессивного декодирования изображений, расширенные функции PNG , метаданные GIF и метаданные, охватывающие сегменты APPn . (См . раздел Новые возможности WIC в Windows 7.)

Direct3D 11

Microsoft Direct3D 11 расширяет функциональные возможности конвейера Direct3D 10 и предоставляет игры Windows 7 и высокопроизводительные трехмерные приложения с эффективным, надежным и масштабируемым доступом к следующему поколению GPU и многоядерным ЦП. В дополнение к функциям Direct3D 10, Direct3D 11 предоставляет несколько новых функций.

Теперь геометрические и высокоупорядоченные поверхности можно выполнять тесселяции для поддержки масштабируемого динамического содержимого в представлениях поверхностей исправлений и разделений.

Чтобы использовать возможности параллельной обработки, доступные из нескольких ядер ЦП, многопоточность увеличивает количество потенциальных вызовов отрисовки на кадр, распределяя вызовы приложения, среды выполнения и драйвера между несколькими ядрами. Кроме того, создание ресурсов и управление ими оптимизировано для многопоточного использования, что обеспечивает более эффективное динамическое управление текстурами для потоковой передачи.

Для Direct3D 11 созданы новые вычислительные шейдеры общего назначения. В отличие от существующих шейдеров, это расширения программируемого конвейера, которые позволяют приложению выполнять больше работы с GPU, независимо от ЦП. DrawAuto, появившаяся в Direct3D 10, была расширена для взаимодействия с вычислительным шейдером.

В высокоуровневый язык заливки (HLSL) были внесены некоторые улучшения, такие как ограниченная форма динамической компоновки в шейдерах для повышения сложности специализации, а также объектно-ориентированные конструкции программирования, такие как классы и интерфейсы. (См . раздел Новые возможности пакета SDK DirectX за март 2009 г.

Улучшения Direct3D 10

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

Конвейер также представляет этап геометрического шейдера, который полностью разгружает работу с ЦП на GPU. Этот новый этап позволяет создавать геометрию, выполнять потоковую передачу данных в память и отрисовывать геометрию без взаимодействия с ЦП.

Ряд других улучшений разработан специально для повышения производительности. Предикатная отрисовка выполняет отбраковку окклюзии, чтобы уменьшить объем отображаемой геометрии. Использование API-интерфейсов позволяет значительно сократить объем геометрии, которую необходимо передать в GPU, за счет рисования нескольких экземпляров похожих объектов. Массивы текстур позволяют GPU выполнять переключение текстур без вмешательства ЦП.

В Direct3D 10 и Direct3D 11 были внесены некоторые дополнения для расширения гаммы конфигураций, которые могут быть нацелены на эти API. Платформа расширенной растеризации Windows (WARP) реализует быструю многоядерную масштабируемую отрисовку ЦП для Direct3D 10, обеспечивая полнофункциональный отрисовку графики в системах без графического оборудования. Добавление новых "уровней компонентов", специально называемых Direct3D 10 level 9, позволяет Direct3D 10 и Direct3D 11APis управлять оборудованием Microsoft Direct3D 9-класса, расширяя число конфигураций, которые приложение Direct3D 10 или Direct3D 11 может нацеливать почти на все компьютерные системы на рынке. (См. раздел Графики Direct3D 10.)

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

В Windows Vista поведение приложения, которое использует как DirectX, так и GDI для отрисовки в общей поверхности, отличается в зависимости от того, включен или выключен DWM. Кроме того, если DWM включен, приложения, использующие Как DirectX, так и GDI, ведут себя иначе в Windows Vista, чем в Windows XP. Это привело к тому, что многие поставщики программного обеспечения отключили DWM при запуске своих приложений в Windows Vista, чтобы обеспечить согласованное поведение. Благодаря улучшениям DirectX в Windows 7 приложение теперь может свободно смешивать DirectX и GDI без отключения DWM. Windows 7 также имеет улучшенную производительность для сценариев, требующих взаимодействия между DirectX и GDI за счет использования более эффективных API Direct3D 10. (См. раздел Общие сведения о взаимодействии Direct2D и GDI.)