[cairo] Blitting and sprites in Cairo
donn.ingle at gmail.com
Wed May 15 02:34:05 PDT 2013
On 15/05/2013 11:07, Chris Wilson wrote:
> Assuming you've disposed off the background layer and only have the
> frontbuffer left - yes, you would need to make a copy of the area to
> be damaged (after undoing the old sprite and before applying the
Not really following you here. Also, how does one make that copy of the
background area (to be damaged)? Which cairo function would extract a
rect from some other surface/pattern?
> However, since you will want to double-buffer the expose event at
> least, you can use that as a composition step and not burn the
> sprites into the backdrop.
Is paint()ing pre-rendered source patterns fast enough?
What if I have quite a long stack of them to draw before I get to the
i.e. bg1, bg2, bg3 ... bg22, then a sprite that moved 2 pixels.
In this case, I had hoped to have this kind of approach:
if only the sprite has moved:
do not double buffer - i.e. no clearing.
replace old damage rect (erase sprite)
get damageable rect <-- the unknown factor.
draw sprite in new pos.
draw everything from bottom to top + sprite at new pos.
Apropos to this: Is there a way to copy everything on the
surface/window/buffer (I'm not sure of the term - I mean the GTK widget
I'm drawing on - the original context) to a single buffer - so next
frame I can draw once rather than loop and composite all the bgs? (Then
I'd draw the sprite in the new pos.)
More information about the cairo