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


Вопросы производительности (Direct3D 10)

Использование пулов эффектов

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

Пул эффектов — это расположение общей памяти для состояния эффекта. Пул создается аналогично эффекту; его можно создать из памяти (или файла или ресурса). Это приводит к двум различным типам эффектов: глобальный эффект, который не зависит от состояния в другом эффекте, и дочерний эффект, зависящий от состояния в другом эффекте.

Вы указываете, является ли эффект глобальным (по умолчанию) или дочерним эффектом (путем указания флага D3D10_EFFECT_COMPILE_CHILD_EFFECT ) при создании эффекта. Глобальный эффект может служить пулом эффектов; дочерний эффект не может быть пулом эффектов.

Отрисовка эффекта

Эффекты (Direct3D 10)