我遇到了问题而且非常烦人。我想使用简单的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应用程序中进行此操作。
答案 0 :(得分:0)
试试这个:
var shaderShader = new Shader();
shader.byteCode = new PixelColourShader();
答案 1 :(得分:0)
你需要使用类似Adobe Pixel Bender的东西将你的文本文件编译成二进制pbj。