[Development] Rendering only items that are visible in Qt Quick
Uwe Rathmann
Uwe.Rathmann at tigertal.de
Fri Mar 23 16:32:16 CET 2018
On Fri, 23 Mar 2018 13:44:03 +0000, Mitch Curtis wrote:
> As I understand it, clipping (the "clip" property) doesn't prevent items
> that aren't visible (in the sense of being out of the viewport, not the
> "visible" property) from actually being rendered.
In my framework ( https://github.com/uwerat/qskinny ) I'm blocking scene
graph nodes for all invisible items, and also played with an
implementation doing the same for items being outside the window ( or
some other clip ).
The challenge is not about preventing unnecessary nodes - it is about,
how to call update, when an item, that had been blocked before, comes
into a visible region.
Item coordinates are relative to the parent and there is no notification
when the absolute coordinates have changed. Introducing such a
notification means running over the complete subtree below an item each
time its position changes.
At this point I gave up as I didn't saw how to implement it without
introducing other significant performance penalties ?
> Comments about how it will never work and I should feel bad for
> suggesting it?
Well, I never found something being written in the docs, but from reading
the code I got the impression, that one very fundamental concept of Qt/
Quick is: fill the caches ( f.e scene graph ) as early and as much as
possible, so that you don't have any delays later.
Of course you have to pay with memory and startup performance, but you
can't have both.
Just to mention it - my framework implements exactly the opposite
strategy: don't do anything expensive before it is really needed.
My 2 cents,
Uwe
More information about the Development
mailing list