Re: Performance issues with RBGA satellite images

Hi Rob-

Try using the visad.bom.ImageRendererJ3D which will give you
better performance at displaying the sat image.  We use it
in the IDV for all our texture map rendering if possible because
it really speeds up the rendering.

For even better performance, you can try using the setReuseFrames()
method of that renderer, but you have to be careful.  The algorithm
will not have to redraw the image if the time is the same.
However, since it is only based on time, it doesn't account for
different areas or different bands if you change the data in the
DataReference.  Also, if you do something like change the color
palette, it will not be rerendered unless you turn reUseFrames
off.

Bill's suggestion is a good one to limit yourself to just one
rebuilding of the display, but in the end, you are rebuilding
the entire display which can be time consuming.

Hope that helps.

Don

Rob Hackett wrote:
    I am writing an application which plots many different types of data
onto the Display at once. I do not suffer from any real performance issues
until I render a satellite image extracted via the AreaAdapter to the
display, using a ScalarMap with a DisplayRealType of Display.RGBA. Once the
image has been rendered (which in itself takes several seconds), the
application begins to suffer from severe performance problems, particularly
when adding new DataReferences. Even adding simple data like a Text object
takes about 20 seconds, more complicated operations such as drawing a front
with the FrontDrawer become virtually unusable.

    I think that what is happening is that by adding a DataReference I am
triggering an event which causes the Display to redraw all it's data,
including the satellite image, which then takes several seconds to redraw.
This problem is then compounded by the fact that more than one event, will
cause the image to be rendered several times, bringing everything else to a
standstill.

    Is there some way of temporarily delaying the replotting of the image
until all other activity from an event, or user interaction has ceased. This
way the replotting could be performed without holding anything else up?

    Alternatively, is this caused by something else that I haven't
considered?

thanks,

Rob



--
*************************************************************
Don Murray                               UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx                        P.O. Box 3000
(303) 497-8628                              Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
        "Time makes everyone interesting, even YOU!"
*************************************************************