Many moons ago I asked a question here on the forums about how to use filters (specifically a glow filter) on a mobile devices (specifically the iPhone) when using GPU rendering and high resolution.
At the time, there was no answer... filters were unsupported. Period.
Well, Thanks to a buddy of mine, this problem has been solved and I can report that I have gotten a color matrix filter for desaturation AND a glow filter working on the iPhone and the iPad using GPU rendering and high resolution.
The solution, in a nut shell is as follows:
1: Create your display object... ie: a sprite.
2. Apply your filter to the sprite like you normally would.
3. Create a new bitmapdata and then draw that display object into the bitmap data.
4. Put the new bitmapdata into a bitmap and then put it on the stage or do what you want.
When you draw the display object into the bitmapdata, it will draw it WITH THE FILTER!
So even if you put your display object onto the stage, the filter will not be visible, but the new bitmapdata will!
Here is a sample app I created and tested on the iphone and ipad
// temp bitmap object
|var bmData:BitmapData;||// temp bitmapData object|
// temp matrix object
|var gl:GlowFilter;||// the glow filter we are going to use|
|var sprGL:Sprite;||// the source sprite we are going to apply the filter too|
|var sprGL2:Sprite;||// the sprite that will hold our final bitmapdata containing the original sprite with a filter.|
// create the filters we are going to use.
gl = new GlowFilter(0xFF0000, 0.9, 10, 10, 5, 2, false, false);
// create the source sprite that will use our glow filter.
sprGL = new Sprite();
// create a bitmap with any image from our library to place into our source sprite.
bm = new Bitmap(new Msgbox_Background(), "auto", true);
// add the bitmap to our source sprite.
// add the glow filter to the source sprite.
sprGL.filters = [gl];
// create the bitmapdata that will draw our glowing sprite.
sprGL2 = new Sprite();
// create the bitmap data to hold our new image... remember, with glow filters, you need to add the padding for the flow manually. Should be double the blur size
bmData = new BitmapData(sprGL.width+20, sprGL.height+20, true, 0);
// create a matrix to translate our source image when we draw it. Should be the same as our filter blur size.
m = new Matrix(1,0,0,1, 10, 10);
// draw the source sprite containing the filter into our bitmap data
// put the new bitmap data into a bitmap so we can see it on screen.
bm = new Bitmap(bmData, "auto", true);
// put the new bitmap into a sprite - this is just because the rest of my test app needed it, you can probably just put the bitmap right on the screen directly.
// put the source sprite with the filter on the stage. It should draw, but you will not see the filter.
sprGL.x = 100;
sprGL.y = 50;
// put the filtered sprite on the stage. it shoudl appear like the source sprite, but a little bigger (because of the glow padding)
// and unlike the source sprite, the flow filter should acutally be visible now!
sprGL2.x = 300;
sprGL2.y = 50;