Re: Blitting and sprites in Cairo

Donn <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
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
> new).
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 
sprite?
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.
else
  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.)

\d
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.