J'ai le code suivant, fait pour le test seulement, car c'était une sorte de bug que je voulais clouer :
_shader = new Shader(new TheShader() as ByteArray);
_shader.data.width.value = [64.0];
_shader.data.height.value = [64.0];
_shaderFilter = new ShaderFilter(_shader);
_sequence = new Vector.<BitmapData>();
var smallBD:BitmapData;
var i:int;
_delta = new Point();
var megabase:BitmapData = new TheBitmap().bitmapData;
var _rect:Rectangle = new Rectangle(0, 0, 64, 64);
for (i = 0; i < 64; i++) {
smallBD = new BitmapData(64, 64, true, 0x00808080);
//_rect.x = i;
_rect.y = i;
smallBD.applyFilter(megabase, _rect, _delta, _shaderFilter);
_sequence.push(smallBD);
}
Ensuite, je parcours _sequence pour voir si le changement de rectangle a un effet réel. Cela ne fait rien, si _shaderFilter est en fait un filtre shader. Le test avec n'importe quel filtre Flash intégré fonctionne comme prévu, mais avec ShaderFilter, il fonctionne parfois comme si le rectangle fourni était simplement sourceBitmapData.rect, quel que soit le bitmap source, et parfois il se comporte comme si aucune donnée n'était transmise, avec des limites situées à des positions bizarres - avec un bitmap de taille 512x384, le bord de la région qui est transmise au shader est apparemment situé à (256,192) ou au centre du bitmap. Jusqu'à présent, je n'ai pu mettre en œuvre qu'une solution de contournement, à savoir copierPixels() la région requise, puis appliquerFilter() à la place. Quelqu'un peut-il prouver qu'il s'agit d'un bug et que je ne fais pas quelque chose de mal ?
PS : J'utilise FlashDevelop avec comme cible de projet Flash Player 10.3, et je ne sais pas si FP11 corrige ce problème.