Uso de um sombreador no modo autônomoFlash Player 10 e posterior, Adobe AIR 1.5 e posterior Quando você usa um sombreador no modo autônomo, o processamento do sombreador é executado independentemente do modo como você pretende usar a saída. Você especifica o sombreador a ser executado, define valores de entrada e de parâmetro e designa um objeto em que são colocados os dados resultantes. Você pode usar um sombreador no modo autônomo por dois motivos:
Use um objeto ShaderJob para executar um sombreador no modo autônomo. Primeiro você deve criar o objeto ShaderJob e vinculá-lo ao objeto Shader que representa o sombreador a ser executado: var job:ShaderJob = new ShaderJob(myShader); Em seguida, defina quaisquer valores de entrada ou de parâmetro esperados pelo sombreador. Se estiver executando o sombreador em segundo plano, você também deverá registrar um ouvinte para o evento complete do objeto ShaderJob. O ouvinte será chamado quando o sombreador concluir seu trabalho: function completeHandler(event:ShaderEvent):void { // do something with the shader result } job.addEventListener(ShaderEvent.COMPLETE, completeHandler); Em seguida, crie um objeto no qual o resultado da operação do sombreador será gravado quando a operação for concluída. Atribua esse objeto à propriedade target do objeto ShaderJob: var jobResult:BitmapData = new BitmapData(100, 75); job.target = jobResult; Atribua uma ocorrência de BitmapData à propriedade target, caso você esteja usando ShaderJob para executar o processamento da imagem. Se estiver processando dados binários ou numéricos, atribua um objeto ByteArray ou uma ocorrência de Vector.<Number> à propriedade target. Nesse caso, você deve definir as propriedades width e height do objeto ShaderJob para especificar o volume de dados a ser gerado para o objeto target. Nota: É possível definir as propriedades shader, target, width e height do objeto ShaderJob em uma única etapa passando argumentos para o construtor ShaderJob(), da seguinte forma:var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);
Quando estiver pronto para executar o sombreador, chame o método start() do objeto ShaderJob: job.start(); Por padrão, chamar start() faz com que ShaderJob seja executado de maneira assíncrona. Nesse caso, a execução do programa prossegue imediatamente com a próxima linha de código, em vez de esperar a conclusão do sombreador. Quando a operação do sombreador é concluída, o objeto ShaderJob chama seus ouvintes de evento complete, notificando-os sobre o término da execução. Nesse momento (isto é, no corpo do ouvinte de evento complete), o objeto target contém o resultado da operação do sombreador. Nota: Em vez de usar o objeto da propriedade target, você pode recuperar o resultado do sombreador diretamente do objeto do evento que é passado para o método do ouvinte. O objeto de evento é uma ocorrência de ShaderEvent. O objeto ShaderEvent tem três propriedades que podem ser usadas para acessar o resultado, dependendo do tipo de dados do objeto definido como a propriedade target: ShaderEvent.bitmapData, ShaderEvent.byteArray e ShaderEvent.vector.
Se preferir, você pode passar um argumento true para o método start(). Nesse caso, a operação do sombreador será executada de maneira síncrona. Todo o código (inclusive a interação com a interface de usuário e quaisquer outros eventos) é pausado enquanto o sombreador é executado. Quando o sombreador é concluído, o objeto target contém o resultado do sombreador e o programa prossegue com a próxima linha de código. job.start(true); |
![]() |