Actionscript 3 在AS3中,如何使用Pixelbender更新位图的一部分,而不是整个位图?

Actionscript 3 在AS3中,如何使用Pixelbender更新位图的一部分,而不是整个位图?,actionscript-3,pixel-bender,Actionscript 3,Pixel Bender,在纯AS3中,我有一个pixelbender和一个大位图。pixelbender可配置一个距离参数,以仅影响位图的一小部分。问题是pixelbender在整个位图上执行。仅更新位图的受影响区域的最佳方法是什么 给定此配置: shader.data.image.input = referenceBitmap.bitmapData; // 300x200 shader.data.position = [150,100]; shader.data.distance = [20]; 以下操作不起作用:

在纯AS3中,我有一个pixelbender和一个大位图。pixelbender可配置一个距离参数,以仅影响位图的一小部分。问题是pixelbender在整个位图上执行。仅更新位图的受影响区域的最佳方法是什么

给定此配置:

shader.data.image.input = referenceBitmap.bitmapData; // 300x200
shader.data.position = [150,100];
shader.data.distance = [20];
以下操作不起作用:

new ShaderJob(shader, 
              bitmap.bitmapData.getPixels(
                  new Rectangle(particle.x -10, 
                            particle.y -10,
                            20,
                            20))).start();
我可以创建一个临时数组来保存计算值,然后将它们复制回bitmapData数组。尽管我希望着色器直接更新bitmapData像素,并且仅在受影响的区域上更新

以下操作可行,但着色器在整个300x200位图上运行:

new ShaderJob(shader, bitmap.bitmapData).start();
有什么建议吗


编辑:过滤器将不起作用,因为有3个输入图像

位图数据允许您使用名为的函数

您可以交替使用着色器作为着色器过滤器,并在bitmapdata上应用着色器过滤器,而不是尝试将bitmapdata与着色器作业一起使用

shader = new Shader(fr.data);
shaderFilter = new ShaderFilter();
shaderFilter.shader = shader;
拥有着色器过滤器后,可以对位图数据使用applyFilter。比如:

referenceBitmap.bitmapData.applyFilter(bitmap.bitmapData,new Rectangle(particle.x -10, 
                        particle.y -10,
                        20,
                        20),new Point(0,0),shaderFilter);

希望这有帮助

我没有提到这个着色器使用了3个输入图像,因此不能作为过滤器运行。。。我认为pixelbender指南中记录的区域可能是解决方案。