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

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

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

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

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

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

Эффекты (Direct3D 10)