AS3 - PixelBender Shader ArgumentError

时间:2013-01-19 13:01:35

标签: actionscript-3 shader pixel-bender

我遇到了问题而且非常烦人。我想使用简单的Shader来返回图像中所有像素的颜色,但简单地将脚本分配给Shader证明是一种挑战。 我不知道PixelBender脚本,因为我只想将它用于这个简单的函数,所以我不打算研究它太多,但是从实例中我构建了这个简单的脚本:

<languageVersion : 1.0;>

kernel PixelColourShader
<   namespace : "puggsoy";
    vendor : "Puggsoy";
    version : 1;
>
{
    input image4 src;
    output pixel4 dst;

    void
    evaluatePixel()
    {
        dst = sampleNearest(src, outCoord());
    }
}

这是我用来测试加载它的简单AS3脚本:

package 
{
    import flash.display.Shader;
    import flash.display.Sprite;
    import flash.utils.ByteArray;

    public class Main extends Sprite 
    {
        [Embed(source = "PixelColourShader.pbj", mimeType = "application/octet-stream")]
        private var PixelColourShader:Class;

        private var shader:Shader;

        public function Main():void 
        {
            shader = new Shader(new PixelColourShader() as ByteArray);
        }

    }

}

我查看过很多例子,我确信这是加载它的正确方法。但是,这总是在运行时出现此错误:

[Fault] exception, information=ArgumentError: Error #2004: One of the parameters is invalid.

我不明白为什么。从我所看到的参数是完全有效的。

我正在使用Flex 4 SDK在Flash应用程序的AIR应用程序中进行此操作。

2 个答案:

答案 0 :(得分:0)

试试这个:

var shaderShader = new Shader();
 shader.byteCode = new PixelColourShader();

答案 1 :(得分:0)

你需要使用类似Adobe Pixel Bender的东西将你的文本文件编译成二进制pbj。