OpenGL - "ultra-smooth" - animation von einfachen horizontal bewegendes Objekt

Ich will einfach nur eine einfache animation (zum Beispiel in C++ mit OpenGL) einige sich bewegende Objekt - sagen wir mal einfache horizontale Bewegung von einem Platz, von Links nach rechts.

In OpenGL, die ich nutzen kann "double-buffering" Methode und lassen Sie uns sagen, ein Benutzer (läuft meine Anwendung mit der animation) haben sich "vertikale sync" auf - ich nenne einige-Funktion jedes mal, wenn ein monitor aktualisiert sich selbst (kann ich erreichen, dass zum Beispiel unter Verwendung von Qt-toolkit und seine Funktion "swapBuffers").

So, ich denke, die "weichsten" - animation, die ich erreichen kann, ist, "das Quadrat von beispielsweise 1 pixel (können auch andere Werte) zu jeder Zeit überwachen erfrischt", also bei jedem "frame" den Platz von 1 pixel weiter - "HABE ich GETESTET, UND ES hat wahrlich FUNKTIONIERT REIBUNGSLOS".

Aber das problem entsteht, wenn ich will "eigene" - thread für das "Spiel der Logik" (verschieben des Quadrats um 1 pixel nach rechts) und für "animation" (Anzeige der aktuellen position des Quadrats auf dem Bildschirm). Weil sagen wir mal die Spiel-Logik-thread ist eine while-Schleife, wo ich den Platz von 1 pixel und dann "schläft" der thread für einige Zeit, beispielsweise 10 Millisekunden, und mein monitor aktualisiert, beispielsweise alle 16 Millisekunden die Bewegung des Platzes "nicht 100% glatt", weil manchmal der monitor-refresh-zwei Zeiten, in denen das Quadrat verschiebt sich nur um 1 pixel und nicht um 2 Pixel (weil es zwei "verschiedene" Frequenzen der monitor-und Spiel-Logik-thread) - und die Bewegung Aussehen wird "etwas Ruckeln".

Also, logisch, ich könnte bleiben mit dem ersten super-glatt-Methode, aber es kann nicht verwendet werden, zum Beispiel "multiplayer" (z.B. "server-client") - Spiele - weil verschiedene Computer haben unterschiedliche Frequenzen des Monitors (so sollte ich verwenden verschiedene threads für die Spiellogik (auf dem server) und für die animation (auf den clients) ).

Also meine Frage ist:
Gibt es irgendeine Methode, mit den verschiedenen threads für die Spiellogik und animation, die tun was "100% glatt" animation einige bewegende Objekt, und wenn etwas vorhanden ist, bitte beschreiben Sie hier, oder wenn ich hatte nur ein paar "komplexere Szene zu Rendern", nur ich würde nicht sehen, dass "kleine, ruckartige Bewegung", die sehe ich jetzt, wenn ich mich bewege, einige einfache quadratische horizontal, und ich tief konzentrieren sich auf es 🙂 ?

InformationsquelleAutor Peter Sivák | 2012-02-22
Schreibe einen Kommentar