Hi,
I use Qt 5.0.1 and tried demo http://qt-project.org/doc/qt-4.8/dem...ypnotizer.html. It doesn't work on 5.0.1 because glWidget->makeCurrent() function in GLPainter::start() leads to the assertion "Cannot make QOpenGLContext current in a different thread" and crash. I added string
context()->moveToThread(&glThread);
to GLWidget::startRendering() before calling connect and this almost fixed the demo - it works stable if only one MDI window is opened and almost always crashes if I try to create new window with new thread. Also it is complaining a lot in the application output like this:
QGLShader::link: "(45,20): warning X3206: implicit truncation of vector type
QWidget::repaint: It is dangerous to leave painters active on a widget outside of the PaintEvent
QBackingStore::flush() called with non-exposed window, behavior is undefined
QGLShader::link: "(45,20): warning X3206: implicit truncation of vector type
QWidget::repaint: It is dangerous to leave painters active on a widget outside of the PaintEvent
etc etc.
I wander is it possible to make it work stable? Was it supposed to be enough in Qt 5.0.1 just to move QGLWidget context to the rendering thread before running it?
I attached the hypnotizer demo with changes mentioned.
Bookmarks