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


Эффекты (Direct3D 10)

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

Первым шагом является упорядочение состояния, которое требуется контролировать в эффекте. К ним относятся состояние шейдера (вершины, геометрии и шейдеров пикселей), текстура и состояние образца, используемое шейдерами, а также другое непрограммируемое состояние конвейера. Вы можете создать эффект в памяти в виде текстовой строки, но обычно размер становится достаточно большим, чтобы сохранить состояние эффекта в файле эффекта (текстовый файл, заканчивающийся расширением .fx). Чтобы использовать эффект, необходимо скомпилировать его (чтобы проверить синтаксис HLSL, а также синтаксис платформы эффектов), инициализировать состояние эффекта с помощью вызовов API и изменить цикл отрисовки для вызова API отрисовки.

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

Руководство по программированию для Direct3D 10