Использование шейдера в автономном режимеFlash Player 10 и более поздних версий, Adobe AIR 1.5 и более поздних версий Когда шейдер используется в автономном режиме, его обработка выполняется независимо от предполагаемого применения вывода. Нужно указать шейдер для выполнения, задать значения ввода и параметры, выбрать объект, в который будет помещен вывод. Использование шейдера в автономном режиме может потребоваться по двум причинам.
Объект ShaderJob служит для выполнения шейдера в автономном режиме. Сначала создается объект ShaderJob и связывается с объектом Shader, представляющим шейдер, который нужно выполнить. var job:ShaderJob = new ShaderJob(myShader); Затем задаются значения ввода или параметры, необходимые для работы шейдера. Если шейдер выполняется в фоновом режиме, также необходимо зарегистрировать прослушиватель для события complete объекта ShaderJob. Прослушиватель вызывается после завершения работы шейдера. function completeHandler(event:ShaderEvent):void
{
// do something with the shader result
}
job.addEventListener(ShaderEvent.COMPLETE, completeHandler);
Затем создается объект, в который будет записан вывод шейдера после завершения операции. Этот объект назначается свойству target объекта ShaderJob. var jobResult:BitmapData = new BitmapData(100, 75); job.target = jobResult; Назначьте свойству target объект BitmapData, если ShaderJob используется для обработки изображения. Если же обрабатываются двоичные или числовые данные, назначьте объект ByteArray или Vector.<Number> свойству target. В этом случае необходимо задать свойства width и height объекта ShaderJob, чтобы указать объем данных для вывода в объект target. Примечание. Чтобы одновременно задать свойства shader, target, width и height объекта ShaderJob, нужно передать аргументы конструктору ShaderJob(), например: var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);
Когда потребуется выполнить шейдер, вызовите метод start() объекта ShaderJob. job.start(); По умолчанию при вызове метода start() запускается асинхронное выполнение ShaderJob. В этом случае выполнение программы сразу переходит к следующей строке кода, а не ожидает завершения обработки шейдера. После завершения операции шейдера объект ShaderJob вызывает свои прослушиватели события complete, сообщая им о готовности. На этом этапе (то есть в теле прослушивателя события complete) объект target содержит результат операции шейдера. Примечание. Вместо использования объекта, назначенного свойству target, вывод шейдера непосредственно можно получить из объекта события, переданного методу прослушивателя. Объект события является экземпляром ShaderEvent. Объект ShaderEvent имеет три свойства, которые можно использовать для получения вывода в зависимости от типа данных объекта, заданного в свойстве target: ShaderEvent.bitmapData, ShaderEvent.byteArray и ShaderEvent.vector.
Также можно передать аргумент true методу start(). В этом случае операция шейдера выполняется синхронно. Выполнение всего кода (включая взаимодействие с пользовательским интерфейсом и другими событиями) приостанавливается до завершения обработки шейдера. После выполнения операции шейдера объект target получает вывод шейдера, и программа переходит к следующей строке кода. job.start(true); |
|