Оптимизация производительности. Использование преимуществ аппаратного ускорения

Внутренняя архитектура WPF состоит из двух конвейеров отрисовки: программного и аппаратного. В этом разделе содержатся сведения об этих конвейерах отрисовки, которые помогут вам принимать решения об оптимизации производительности приложений.

Аппаратный конвейер отрисовки

Одним из наиболее важных факторов при определении производительности WPF является то, что она привязана к отрисовке — чем больше отрисовывается пикселей, тем больше затрат на производительность. Однако чем больший объем отрисовки можно разгрузить на графический процессор (GPU), тем больше преимуществ производительности вы получаете. Аппаратный конвейер отрисовки приложения WPF использует все преимущества функций Microsoft DirectX на оборудовании, поддерживающем как минимум Microsoft DirectX версии 7.0. Дополнительная оптимизация доступна с помощью оборудования, поддерживающего функции Microsoft DirectX версии 7.0 и PixelShader 2.0+.

Программный конвейер отрисовки

Программный конвейер отрисовки WPF полностью привязан к ЦП. WPF использует наборы инструкций SSE и SSE2 на ЦП, чтобы реализовать оптимизированное полнофункциональное программное средство отрисовки. Переход обратно на программное обеспечение обеспечивает простую и удобную обработку функциональных возможностей приложений с помощью аппаратного конвейера отрисовки.

Самая большая проблема с производительностью, с которой вы столкнетесь при отрисовке в программном режиме, связана со скоростью заполнения, которая определяется как количество отрисовываемых пикселей. Если вы обеспокоены производительностью в режиме отрисовки программного обеспечения, попробуйте свести к минимуму количество перерисовок пикселей. Например, если у вас есть приложение с синим фоном, которое затем отрисовывает частично прозрачное изображение над ним, все пиксели в приложении отрисовываются дважды. В результате для отрисовки приложения с изображением потребуется в два раза больше времени, чем если бы у вас был только синий фон.

Уровни графической отрисовки

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

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

Ниже перечислены возможности графического оборудования, которые сильнее всего влияют на уровни отрисовки.

  • Видеопамять. Объем видеопамяти графического оборудования определяет размер и число буферов, которые можно использовать для компоновки графики.

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

  • Вершинный построитель текстуры. Вершинный построитель текстуры — это функция обработки графики для выполнения математических операций над данными вершин объекта.

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

Построитель текстуры, построитель вершин и функции с поддержкой нескольких текстур используются для определения отдельных уровней версий DirectX, которые, в свою очередь, используются для определения различных уровней отрисовки в WPF.

Возможности графического оборудования определяют возможности отрисовки приложения WPF. Система WPF определяет три уровня отрисовки.

  • Уровень отрисовки 0. Аппаратное ускорение графики отсутствует. Уровень версии DirectX меньше версии 7.0.

  • Уровень отрисовки 1. Частичное аппаратное ускорение графики. Уровень версии DirectX больше или равен версии 7.0 и меньше версии 9.0.

  • Уровень отрисовки 2. Большинство графических функций используют аппаратное ускорение графики. Уровень версии DirectX больше или равен версии 9.0.

Дополнительные сведения об уровнях отрисовки WPF см. в разделе Уровни графической отрисовки.

См. также