YopSolo.fr est un site personnel qui présente mes expériences web, flash actionscript et html5 ainsi que des outils et des sites qui pourraient vous être utile 1 jour ;)
Blit is to copy bits from one part of a computer’s graphical memory to another part.
It is commonly believed that Blit is an acronym for BLock Image Transfer, according to wikipedia this is not the real definition but it fit perfectly, so it’s fine with me :p
Real worl example
Here the signature of SDL_BlitSurface function
int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);
SDL_Surface is an area of graphical memory that can be drawn to the video framebuffer.
SDL_Rect is a rectangle
Just like the definition said, blitting is to copy a rectangle of the first image (source) onto another one (destination)
A basic rendering process works like this
A variation involves dividing the screen into segments and erasing only the segments where patterns have been drawn on. This technique is known as dirty rectangles.
Why blitting ?
Let’s practice !
C++/SDL are great but need some alchemy to run into the browser. So let’s use regular Flash and Action Script 3 for a web friendly demo :)
First we need to know bitmap related stuff
Here how to create a surface in graphical memory
var myBackground_dat:BitmapData = new BitmapData( iMyWidth, iMyHeight, bAlphaChanel, imyFillColor );
And how to display it on screen
var myBackground:Bitmap = new Bitmap( myBackground_dat ); addChild(myBackground);
Notice that you cannot put directly a bitmapdata on Screen, you need a wrapper to build an image from it.
Demo (the slider is just a toy to change ‘gravity’)
The keypoint of the algorithm
_screen.copyPixels(_background, _background.rect, _background.rect.topLeft);
_screen.copyPixels(_yBalls[b.idx], _yBalls[b.idx].rect, P);
#Number of objects
You will have more than 6000 objets on screen, question is.
Is it better to keep object alive and recycle them or dispose them and recreate when needed ?
The new keyword is known to be slow and intensive, so I think it’s better to keep objects even if it allocate a fixed amount of memory.
Always check your CPU. Use some vodoo-dark-magic and test your app on the Dead-Android-Mobile-Flash-Player.
When you run smooth on it, you can be sure that your content run everywhere else.
hope you like this tut :)