versuche mir grad eine kleine 3D-Umgebung mit OpenGL einzurichten, dazu verwende ich Threads um möglichst viele fps zu erreichen.
Im Renderthread( geerbt von QThread) hole ich mir in einer while Schleife immer den Rendercontext mit makeCurrent() um dort zeichnen zu können.
Jedoch blockiert die Funktion makeCurrent() beim Aufrufen so lange bis ich
a) die fenstergröße ändere
b) eine taste drücke während das fenster aktiv ist
c) die maus im fenster bewege
getestet hab ich das mit dem debugger: die while schleife geht bis zu dem makeCurrent() stoppt dann und geht erst weiter wenn a, b oder c eintrifft.
Hier die Schleife:
Code: Alles auswählen
while(render_flag)
{
gettimeofday(&startTime, 0);
if( resize_flag )
{
resizeGL(viewport_size.width(),viewport_size.height());
resize_flag = false;
}
paintGL();
glWidget.swapBuffers();
glWidget.doneCurrent();
glWidget.mutex().unlock();
glWidget.mutex().lock();
glWidget.makeCurrent();
gettimeofday(&endTime, 0);
dif = (endTime.tv_sec - startTime.tv_sec) * 1000000 + (endTime.tv_usec - startTime.tv_usec);
qDebug() << dif;
}danke moritz