Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эффект можно использовать для хранения информации или отрисовки с помощью группы состояний. Каждый метод задает некоторый набор шейдеров вершин, шейдеров корпусов, шейдеров домена, шейдеров геометрии, шейдеров пикселей, вычислительных шейдеров, состояния шейдера, состояния образца и текстуры, состояния представления неупорядоченного доступа и другого состояния конвейера. Таким образом, после того как вы организовали состояние в эффект, вы можете инкапсулировать эффект отрисовки, который возникает из этого состояния, создав и отобразив эффект.
Существует несколько шагов по подготовке эффекта для отрисовки. Первое — компиляция, которая проверяет код, похожий на HLSL, на соответствие синтаксису языка HLSL и правилам фреймворка эффектов. Вы можете скомпилировать эффект от приложения с помощью вызовов API или скомпилировать эффект в автономном режиме с помощью программы компилятора эффектов fxc.exe. После успешного компиляции эффекта создайте его, вызвав другой (но очень похожий) набор API.
После создания эффекта необходимо выполнить два оставшихся шага для его использования. Во-первых, необходимо инициализировать значения состояния эффекта (значения переменных эффекта), используя ряд методов для задания состояния, если они не инициализированы в HLSL. Для некоторых переменных это можно сделать один раз при создании эффекта; другие должны обновляться каждый раз, когда приложение вызывает цикл отрисовки. После установки переменных эффекта вы указываете среде выполнения отрисовать эффект, применив технику. Все эти темы подробно рассматриваются ниже.
Естественно, существуют соображения производительности при использовании эффектов. Эти соображения в значительной степени одинаковы, если вы не используете эффект. Такие вещи, как минимизация количества изменений состояния и организация переменных по частоте обновления. Эти тактики используются для минимизации объема данных, которые необходимо отправить с ЦП на GPU, и, следовательно, свести к минимуму потенциальные проблемы синхронизации.
Тема | Описание |
---|---|
Сборка эффекта |
После создания эффекта следующим шагом является компиляция кода для проверки проблем синтаксиса. |
создание эффекта |
Эффект создается путем загрузки скомпилированного байт-кода эффекта в платформу эффектов. В отличие от Effects 10, эффект необходимо скомпилировать перед созданием. Эффекты, загруженные в память, можно создать путем вызова D3DX11CreateEffectFromMemory. |
задать состояние эффекта |
Некоторые константы эффектов нужно только инициализировать. После инициализации состояние эффекта устанавливается на устройство для всего цикла отрисовки. Другие переменные необходимо обновлять каждый раз при вызове цикла отрисовки. Ниже показан базовый код для задания переменных эффекта для каждого типа переменных. |
Применение техники |
Если константы, текстуры и состояние шейдера объявлены и инициализированы, единственное, что осталось сделать, — задать состояние эффекта на устройстве. |