독립 실행형 모드에서 셰이더 사용Flash Player 10 이상, Adobe AIR 1.5 이상 셰이더를 독립 실행형 모드에서 사용하는 경우 셰이더 처리는 의도한 출력 사용 방법과 관계없이 실행됩니다. 실행할 셰이더를 지정하고 입력 및 매개 변수 값을 설정한 다음 결과 데이터를 배치할 객체를 지정합니다. 다음과 같은 두 가지 목적으로 셰이더를 독립 실행 모드에서 사용할 수 있습니다.
ShaderJob 객체를 사용하여 독립 실행형 모드에서 셰이더를 실행할 수 있습니다. 먼저 ShaderJob 객체를 만들고 이 객체를 실행할 셰이더를 나타내는 Shader 객체에 연결합니다. var job:ShaderJob = new ShaderJob(myShader); 그런 다음 셰이더에 필요한 입력 또는 매개 변수 값을 설정합니다. 셰이더를 백그라운드에서 실행할 경우 ShaderJob 객체의 complete 이벤트에 대한 리스너도 등록합니다. 리스너는 셰이더의 작업이 완료될 때 호출됩니다. function completeHandler(event:ShaderEvent):void { // do something with the shader result } job.addEventListener(ShaderEvent.COMPLETE, completeHandler); 그런 다음 셰이더 작업이 완료될 때 해당 결과를 쓸 객체를 만듭니다. ShaderJob 객체의 target 속성에 해당 객체를 할당합니다. var jobResult:BitmapData = new BitmapData(100, 75); job.target = jobResult; ShaderJob을 사용하여 이미지 처리를 수행하는 경우에는 target 속성에 BitmapData 인스턴스를 할당합니다. 이진 또는 숫자 데이터를 처리하는 경우에는 ByteArray 객체 또는 Vector.<Number> 인스턴스를 target 속성에 할당합니다. 이러한 경우 ShaderJob 객체의 width 및 height 속성을 설정하여 target 객체에 출력할 데이터의 양을 지정해야 합니다. 참고: var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);과 같이 ShaderJob() 생성자에 인수를 전달하여 ShaderJob 객체의 shader, target,width 및 height 속성을 한 번에 설정할 수 있습니다.
셰이더를 실행할 준비가 되면 ShaderJob 객체의 start() 메서드를 호출합니다. job.start(); 기본적으로 start()를 호출하면 ShaderJob이 비동기적으로 실행됩니다. 이 경우 셰이더가 완료될 때까지 기다리지 않고 코드의 다음 행에서 즉시 프로그램 실행을 계속할 수 있습니다. 셰이더 작업이 완료되면 ShaderJob 객체는 작업이 완료되었음을 알리는 complete 이벤트 리스너를 호출합니다. 이때, 즉 complete 이벤트 리스너의 본문에서 target 객체에는 셰이더 작업 결과가 포함됩니다. 참고: target 속성 객체를 사용하는 대신 리스너 메서드에 전달된 이벤트 객체에서 직접 셰이더 결과를 가져올 수 있습니다. 이벤트 객체는 ShaderEvent 인스턴스입니다. ShaderEvent 객체에는 target 속성으로 설정한 객체의 데이터 유형에 따라 결과에 액세스하는 데 사용할 수 있는 ShaderEvent.bitmapData, ShaderEvent.byteArray 및 ShaderEvent.vector 속성이 있습니다.
또한 start() 메서드에 true 인수를 전달할 수 있습니다. 이 경우 셰이더 작업은 동기적으로 실행됩니다. 사용자 인터페이스 및 다른 이벤트와의 상호 작용을 포함하는 모든 코드는 셰이더가 실행되는 동안 일시 중지됩니다. 셰이더가 완료되면 target 객체에는 셰이더 결과가 포함되고 프로그램은 다음 코드 행에서 계속 실행됩니다. job.start(true); |
|