Оптимизация производительности. Использование преимуществ аппаратного ускорения
Во внутренней архитектуре WPF представлены два конвейера визуализации: аппаратный и программный. В этом разделе представлены сведения об этих конвейерах визуализации, которые могут использоваться для выбора способа оптимизации производительности приложений.
Аппаратный конвейер визуализации
Одним из наиболее важных факторов в определении производительности WPF является фактор, связанный с визуализацией. Чем больше точек отображается, тем больше расходуется ресурсов. Соответственно, для повышения производительности следует передать определенную часть нагрузки по визуализации в graphics processing unit (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 см. в разделе Уровни графической отрисовки.
См. также
Основные понятия
Улучшение производительности приложений WPF
Планирование производительности приложения
Оптимизация производительности: разметка и разработка
Оптимизация производительности: двумерная графика и обработка изображений
Оптимизация производительности: поведение объекта
Оптимизация производительности: ресурсы приложения
Оптимизация производительности: отображение текста