wie man updateGL () in QT realtime macht

8

Ich frage mich, ob das Aufrufen von updateGL () in festen Timer-Intervallen den Renderprozess verlangsamen kann. Also, ich möchte versuchen, den Render in Echtzeit zu machen. Ich habe nicht die Funktion, es automatisch ausführen zu lassen. Wer weiß das?

zweitens habe ich updateGL () in meinem Programm kommentiert, CPU-Auslastung auf 1% und 0% reduziert. Jetzt, wenn ich auf das Display-Widget klicke, springt es auf 14%, warum? macht nicht die GPU den gesamten Rendering-Job? Wenn ja, warum springt die CPU auf 14? Wie kann ich das beheben?

    
Sam 18.06.2013, 11:00
quelle

1 Antwort

11

Ja, Sie können es in Echtzeit erstellen, ohne zu reißen (z. B. bei genau 60 fps, die Bildwiederholfrequenz Ihres Monitors).

Dazu müssen Sie V_sync aktivieren und QTimer timer; von Intervall 0 verwenden. Wenn Sie V_sync aktivieren, wird der Befehl swapBuffers() automatisch an die CPU gesendet. Warten Sie auf das vertikale Refresh-Signal von Ihrem Monitor. Dann wird der Timer tatsächlich mit der Aktualisierungsrate des Monitors synchronisiert.

Eine ähnliche Information finden Sie hier: Ссылка . Beachten Sie die QGLFormat::setSwapInterval(1) , um V_sync zu aktivieren, wenn dies nicht automatisch von Ihren Treibereinstellungen vorgenommen wird:

%Vor%

Parallel dazu können Sie QElapsedTimer ausführen, um zu messen, wie viel Zeit zwischen zwei Zeichnungen verstrichen ist (normalerweise ca. 16,6 ms). Verwenden Sie diese Informationen, um beispielsweise Ihre Szene zu aktualisieren.

    
Boris 18.06.2013 11:18
quelle

Tags und Links