1

我有一个问题,它变得非常烦人。我想使用一个简单Shader的方法来返回图像中所有像素的颜色,但简单地将脚本分配给 aShader被证明是一个挑战。我不知道 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 在带有 FlashDevelop 的 AIR 应用程序中进行此操作。

4

2 回答 2

0

您需要使用 Adob​​e Pixel Bender 之类的工具将您的文本文件编译成二进制 pbj。

于 2014-12-01T19:22:01.080 回答
0

尝试这个:

var shaderShader = new Shader();
 shader.byteCode = new PixelColourShader();
于 2013-01-19T13:48:16.173 回答