我有一个问题,它变得非常烦人。我想使用一个简单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 应用程序中进行此操作。