Gölgelendiriciyi bağımsız modda kullanmaFlash Player 10 ve üstü, Adobe AIR 1.5 ve üstü Bir gölgelendiriciyi bağımsız modda kullandığınızda, gölgelendirici işleme, çıktıyı nasıl kullanmayı planladığınızdan bağımsız olarak çalışır. Çalıştırılacak bir gölgelendirici belirtirsiniz, girdi ve parametre değerlerini ayarlarsınız ve sonuçta elde edilen verilerin yerleştirileceği bir nesne atarsınız. İki nedenden dolayı bağımsız modda bir gölgelendirici kullanabilirsiniz:
Gölgelendiriciyi bağımsız modda çalıştırmak için bir ShaderJob nesnesi kullanabilirsiniz. İlk olarak ShaderJob nesnesi oluşturur ve bunu çalıştırılacak gölgelendiriciyi temsil eden Shader nesnesine bağlarsınız: var job:ShaderJob = new ShaderJob(myShader); Daha sonra, gölgelendiricinin beklediği girdi veya parametre değerlerini ayarlarsınız. Gölgelendiriciyi arka planda çalıştırıyorsanız, ayrıca ShaderJob nesnesinin complete olayı için bir dinleyici kaydedersiniz. Gölgelendirici işini bitirdiğinde dinleyiciniz çağrılır: function completeHandler(event:ShaderEvent):void { // do something with the shader result } job.addEventListener(ShaderEvent.COMPLETE, completeHandler); Daha sonra, işlem sona erince gölgelendirici işlemi sonucunun yazıldığı bir nesne oluşturursunuz. Bu nesneyi ShaderJob nesnesinin target özelliğine atarsınız: var jobResult:BitmapData = new BitmapData(100, 75); job.target = jobResult; Görüntü işlemeyi gerçekleştirmek için ShaderJob kullanıyorsanız, target özelliğine bir BitmapData atayın. İkili veri veya sayı verisi işliyorsanız, target özelliğine bir ByteArray nesnesi veya Vector <Number> örneği atayın. Bu durumda, target nesnesine verilecek veri miktarını belirtmek için ShaderJob nesnesinin width ve height özelliklerini ayarlamanız gerekir. Not: ShaderJob() yapıcısına şu şekilde argümanlar ileterek tek bir adımda ShaderJob nesnesinin shader, target,width ve height özelliklerini ayarlayabilirsiniz:var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);
Gölgelendiriciyi çalıştırmaya hazır olduğunuzda, ShaderJob nesnesinin start() yöntemini çağırırsınız: job.start(); Varsayılan olarak, start() yönteminin çağrılması, ShaderJob öğesinin senkronize olmadan çalıştırılmasına neden olur. Bu durumda program çalıştırması, gölgelendiricinin sona ermesi beklenmeden hemen bir sonraki kod satırıyla birlikte devam eder. Gölgelendirici işlemi sona erdiğinde, ShaderJob nesnesi complete olay dinleyicilerini çağırarak işlemin bittiğini bildirir. Bu noktada (başka bir deyişle, complete olay dinleyicinizin gövdesinde), target nesnesi gölgelendirici işleminin sonucunu içerir. Not: target özellik nesnesini kullanmak yerine, gölgelendirici sonucunu doğrudan dinleyici yönteminize iletilen olay nesnesinden alabilirsiniz. Olay nesnesi bir ShaderEvent örneğidir. ShaderEvent nesnesi, target özelliği olarak ayarladığınız nesnenin veri türüne bağlı olarak sonuca erişmek için kullanılabilecek üç özelliğe sahiptir: ShaderEvent.bitmapData, ShaderEvent.byteArray ve ShaderEvent.vector.
Alternatif olarak, start() yöntemine bir true argümanı iletebilirsiniz. Bu durumda gölgelendirici işlemi eşzamanlı olarak çalıştırılır. Tüm kod (kullanıcı arabirimiyle etkileşim ve diğer olaylar dahil), gölgelendirici çalıştırılırken duraklatılır. Gölgelendirici sona erdiğinde, target nesnesi, gölgelendirici sonucunu içerir ve program bir sonraki kod satırıyla devam eder. job.start(true); |
|