Re: blit'n
- From: John Cupitt ng-london org uk
- To: bpatton dal asp ti com
- Cc: gtk-list gnome org
- Subject: Re: blit'n
- Date: Fri, 7 Jun 2002 11:00:32 +0100
Billy Patton wrote:
> Now I need to speed up my data drawing.
>
> I have a configure_event that creates a pixmap and draws it black. I want
> a black background;
> It then calls my draw_cell which draws into the pixmap.
> Within this recursive routine I do
> gdk_rgb_gc_set_foreground(gc,white);
> gdk_draw_rectangle (pixmap,gc,FALSE,mcr.ll.x,mcr.ll.y,w,h);
>
> and some
> gdk_rgb_gc_set_foreground(gc,white);
> gdk_draw_polygon(pixmap,gc,FALSE,gpts,npts);
>
> At the end of this function I do a
>
> gdk_draw_pixmap(drawing_area->window,gc,pixmap,0,0,0,0,canvas_x,canvas_y);
>
>
> I take it that this is my blitting. Problem is I may call this draw_cell
> several hundred thousand times. SO this is ver slow.
>
> Should this draw_pixmap be placed after the call to draw_cell
> so that blitting is done only once?
>
> My code was originally written for gtk1.???
Hi Billy, I'm not sure, but it sounds like you need to move your drawing
to the expose event.
- in configure
- build your off-screen pixmap
- paint your static data into it
- in expose
- copy the right section of your offscreen pixmap to the display
gtk guarantees that you get configure before expose, so everything will
be set up by the time you need to paint the screen
setting things up like this will make window resize slow, but paints
will be very fast. As an alternative, you can do all the painting in
expose (ie. no backing pixmap), it won't be much quicker overall, but at
least the user will see something happening on the screen while they
wait :-)
John
==========================================================
Coming soon:
Fabric of Vision
Dress and Drapery in Painting
19 June - 8 September 2002
For information and tickets:
http://www.nationalgallery.org.uk/exhibitions/fabric/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]