Frage

Im Moment arbeite ich an einem Spiel-Engine in pygame geschrieben und ich wollte OpenGL-Unterstützung hinzuzufügen.

Ich schrieb einen Test, um zu sehen, wie pygame und OpenGL Arbeit zusammen zu machen, und wenn es im Fenstermodus läuft, läuft es zwischen 150 und 200 fps. Wenn ich ihm Vollbild laufen (alles, was ich tat, war die Fullscreen Flag ist hinzuzufügen, wenn ich das Fenster einrichten), fällt es bis zu 60 Bildern pro Sekunde nach unten. Ich habe viel mehr Zeichenfunktionen, um zu sehen, ob es nur ein großer Leistungsabfall war, aber es lief immer bei 60 fps.

Gibt es etwas extra ich tun muss OpenGL sagen, dass es Vollbild ausgeführt wird oder ist dies eine Einschränkung von OpenGL?

(I in Windows XP leite)

War es hilfreich?

Lösung

Wie frou wies darauf hin, würde dies für die vertikalen Rücklauf auf Pygame warten fällig, wenn Sie den Bildschirm aktualisieren, indem display.flip() aufrufen. Als Pygame display Dokumentation stellt fest, wenn Sie die Set Anzeigemodus der HWSURFACE oder die DOUBLEBUF Flags verwenden, display.flip() wird für den vertikalen Rücklauf warten, bevor Puffer getauscht werden.

Um ehrlich zu sein, ich sehe keinen guten Grund (abgesehen von Benchmarking) zu versuchen, eine Frame-Rate zu erreichen, die schneller ist als die Bildwiederholrate des Bildschirms. Sie (und die Leute das Spiel spielen) in der Lage, keinen Unterschied in der Geschwindigkeit oder Leistung feststellen, da die Anzeige nur 60 fps sowieso ziehen. Plus, wenn Sie nicht mit dem vertikalen Rücklauf synchronisieren, gibt es eine gute Chance, dass Sie Bildschirm bekommen reißen .

Andere Tipps

Ist das ein V-Sync Problem? Etwas über die Konfiguration oder Ihre Umgebung kann der Monitor Bildwiederholfrequenz maximale Bildrate einschränkend.

Wenn Sie nicht Ihren clock.tick ändern (), wenn Sie zwischen Vollbild- und Fenstermodus zu ändern ist dies mit ziemlicher Sicherheit ein Vsync Problem. Wenn Sie auf einem LCD sind, dann ist es 100% sicher ist.

Leider V-Sync kann in vielen Orten einschließlich SDL, PyOpenGL, Ihre Anzeige-Server und Ihre Grafiktreiber behandelt werden. Wenn Sie Windows verwenden, können Sie die Vsync Toggle im nvidia Bedienfeld einstellen zu testen, und es gibt mehr als wahrscheinlich etwas in nvidia-settings für Linux als auch. Ich würde vermuten, andere Hersteller Treiber haben ähnliche Einstellungen, aber das ist eine Vermutung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top