It depends on what your update state is...
If you want to tick rendering state (OpenGL and Scene Graph stuff) then you can
call QQuickWindow::update() and make a direct connection to
QQuickWindow::beforeRendering() to advance the state on the render thread just
before the scene is drawn.
If you have a QSGNode structure you want to update, call QQuickItem::update()
and QQuickItem::updatePaintNode() will be called to synchronise your item state
into the scene graph before the scene graph is rendered.
If you have GUI thread state, application logic and other stuff you can call
QQuickItem::polish() and reimplemnt QQuickItem::updatePolish() which is called
just before the QML tree is synced into the render thread.
If you have continuous animations use QAbstractAnimation and use the time you
get in updateCurrentTime().
cheers,
Gunnar
On 14 May 2014, at 16:53, raskolni...@es.gnu.org wrote:
Hi guys!
So... I am working on a project where the data model is written in a
functional style and uses a epochal approach to move it's state
forward... the details would probably bore you but the important thing is
that it requires a tick() function to be called to make an updated world
state visible.
This seems to be tricky in Qt and I haven't found the best approach yet...
and I am starting to wonder if is even possible at all.
Because following some discussions in this list it seems that animations
are ticked at frame-rate, I tried deriving from QAbstractAnimation and
tick updateCurrentTime(), however, that made the state lag one frame
behind rendering, something quite visible when dragging an object (the Qt
draggable would be updated automatically, but our data-model based stuff
would lag one frame).
Then I tried making an eventFilter() in which I do something like this:
if (event != MyTickEvent)
postEvent(MyTickEvent)
else
tick()
I expected this to remove the lagging, but while it improves the
situation, there are cases in which I can still see some lagging.
Furthermore, this approach involves too much ticking, while ticking one
per frame should be enough.
So, am I missing something? Is there a general way to tick my state update
before rendering?
Thanks!
JP
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development