[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