Graphic Objects & Memory Use
Alex Tweedly
alex at tweedly.net
Sat Jan 1 14:26:24 EST 2005
Gordon Webster wrote:
>Dear Revolutionaries
>
>I have a question or two about rev's graphic objects
>...
>
>Since the rev graphic objects such as lines and shapes
>are objects that can have their own properties, styles
>etc., is there a big memory overhead in using them to
>create complicated graphics?
>
>
I'm sure there is some overhead - but not too much. (Note - this is
speculation on my part - I have no inside knowledge.)
I'd be concerned about storing a million objects each of which is a
single line - but not about a few thousand of them (though it can be
expensive in time to create many graphics - or even worse to delete them
....)
Note that there are some very clever things you can do with polygon
objects that in some cases allow you to achieve the drawing effects you
want with many fewer graphic objects (and much more speed).
For instance, you can put a "marker" on each vertex of a polygon (this
is a quick way to draw many similar shapes - set the marker of a polygon
to the shape you want to draw, and then simply adding a vertex to the
polygon gives you a whole extra shape. This is often used in combination
with the other unusual feature - a blank line in the list of vertices
results in a "non-visible" edge; so a list of points like
100,100
100,200
200,200
400,400
400,500
will result in two disjoint line line segments.
>What would be the best way in rev to do the equivalent
>of double-buffering the graphics i.e. invisibly
>drawing the next frame of a complex graphic in
>background and then displaying it?
>
>
The simple answer is that you probably don't need to double-buffer it.
Of course there are cases where the simple answer is wrong :-)
If you have a few thousand graphic shapes, and want to redraw them, then
you may need to. On the other hand, if you can use the clever features
of polygons above, then you can get very smooth animation effects at
very high speed without double-buffering.
If you need to double-buffer, you can do
set lockscreen to true
-- draw the "next" screen now
set lockscreen to false
If you haven't already, take a look at Malte's libRMC (latest version
announced on the list within the last few weeks)
-- Alex.
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.298 / Virus Database: 265.6.7 - Release Date: 30/12/2004
More information about the use-livecode
mailing list