[Marble-devel] Optimization tips
Torsten Rahn
tackat at t-online.de
Thu Jan 3 13:14:36 UTC 2013
Hi,
Well it depends a lot on what you paint and how.
A) GeoPainter is relatively low-level painting (like QPainter).
For some use cases it makes sense to use it:
We use it for example in the coordinate grid where in theory there are
millions of coordinate grid lines. Instead of "instantiating" them fully we
only determine which possible lines would have to be drawn for the current
viewport.
This basically equals:
http://techbase.kde.org/Projects/Marble/Runners/PaintingGeoDataLineString
... and that is probably what you have done already.
B) Another approach would be to treat the polygons/lines as objects. You can
either instantiate the objects via C++ code:
http://techbase.kde.org/Projects/Marble/Runners/DisplayGeoDataPlacemark
... or you can load ready-made "KML" files (xml code) into your widget:
http://techbase.kde.org/Projects/Marble/Runners/LoadingKML
So the object-oriented approach is quite similar to the concept of Qt's
QGraphicsView. And this one allows for some internal "high-level" performance
optimization: Internally we have started to create "TilePyramids" that would
only have objects painted (and evaluated) if they cover a certain region
("tile") that is currently inside the viewport. So this is something that
should improve performance (and will do so even more with future Marble
development).
So the second approach might be better if you want best performance without
having to worry much about optimizations. But with the first approach you
might have better control over what you're doing and you could do the whole
bsp-tree / tilePyramid thing yourself in some way that is optimal for your use
case.
Do your thousands of polygons only cover a certain small area or are they
covered over the whole globe? What is the amount of nodes of a typical
polygon? Do you have to change the pen and brush frequently?
Best Regards,
Torsten
In other cases it's better if you treat
On Donnerstag, 3. Januar 2013 09:15:05 jean-charles.quillet at alyotech.fr wrote:
> >-----Message d'origine-----
> >De : De la part de Torsten Rahn
> >Envoyé : mercredi 2 janvier 2013 16:01
> >
> >On Mittwoch, 2. Januar 2013 15:50:10 jean-charles.quillet at alyotech.fr
>wrote:
> >> Hello,
> >>
> >> I'm drawing a lot of vectorial datas on a marble map (~100000 lines
> >> and polygons, sometimes more). The rendering is beginning to be very
> >> slow. What are my options to accelerate the rendering ?
> >> Thanks,
> >
> >What are you using to draw the stuff? GeoPainter? Or do you import KML?
>
> I dont import KML. But I'm using the GeoPainter using layers as described
> in :
>
> http://techbase.kde.org/Projects/Marble/LayerInterface
> _______________________________________________
> Marble-devel mailing list
> Marble-devel at kde.org
> https://mail.kde.org/mailman/listinfo/marble-devel
More information about the Marble-devel
mailing list