Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   OpenGL spiel Frameüberlagerung (https://www.delphipraxis.net/168239-opengl-spiel-frameueberlagerung.html)

roboter202 10. Mai 2012 16:31


OpenGL spiel Frameüberlagerung
 
Hi,

also ich hab da ein "kleines" 3D Labyrinth Spiel gemacht ,ist aber noch lange nicht fertig. Naja wenn ich das jetzt Test und meinen Maus schnell bewege sodass sich die Kamera im Spiel entsprechend dreht. Dann naja es ruckelt nicht wirklich aber. Mmh. Wie soll ich sagen?

Es entstehen so "Geisterbilder", also es überlagern sich Bilder, oder zumindest sieht es so aus, manche sind dann etwas transparenter, obwohl ich >500 FPS habe. Es kann natürlich an der Anzeige oder so liegen das meinen Augen zu träge für die schnellen Bewegungen ist aber es ist in jedem Fall nicht perfekt.

Kenn jemand so ein Problem? Wenn es sich jemand nicht genau vorstellen kann könnte ich die halbfertige jedoch funktionierende Version auch hochladen.
Was kann ich dagegen tun? Möglichst ohne die Bewegungs-/Drehgeschwindigkeit einzuschränken.

EDIT!!!!

Also ich hab jetzt grad mal einen Screenshot gemacht die Einzelbilder sind ok. aber die Frequenz ist für den Monitor wohl zu hoch und es gibt Sprünge.
Jedoch auch mit Vertikaler Synchronisation habe ich das Problem.

Gruß
Christian Windeck

Medium 10. Mai 2012 22:41

AW: OpenGL spiel Frameüberlagerung
 
Klingt mir eher nach der (physikalisch bedingten) Trägheit deines LCD Monitors. Gerade wenn die Stichproben von Einzelbildern okay sind - das ist schon nen recht starkes Indiz. Dagegen kannst du dann eigentlich nur eines machen: Ein neuer Bildschirm mit spieletauglicher Reaktionszeit ;)

roboter202 11. Mai 2012 14:02

AW: OpenGL spiel Frameüberlagerung
 
Naja ich habs jetzt nochmal auf meinem Primärmonitor getestet einem Dell E228WFP mit 5ms Reaktionszeit. Und auch hier hab ich das Problem zumindest Ansatzweise. Vermutlich stelle ich zu hohe Ansprüche.

Denn wenn an der Zeile:

Delphi-Quellcode:
  rotation.y := rotation.y + (xcur - xsol) / deltaT * 2.9;
Rotation.y => Rotation in Grad um die Y-Achse
xcur => Aktuelle X-Position des Cursors
xsol => Soll X-Position des Cursors (Mitte)
deltaT => Zeit in ms seit dem letzten Frame

nichts auszusetzen ist dann ist alles in Ordnung.

Medium 11. Mai 2012 14:06

AW: OpenGL spiel Frameüberlagerung
 
Dabei kann nicht viel schief gehen. Das einzige was mir sonst noch einfiele wäre, dass du beim eigentlichen Zeichnen (bzw. beim zuvorigen leeren der Zeichenfläche) ggf. nicht vollständig opak bist. Auf diese Weise hatte ich eben diesen Effekt nämlich mal absichtlich herbeigeführt (Motion-Blur) :)

roboter202 12. Mai 2012 10:46

AW: OpenGL spiel Frameüberlagerung
 
Problem gelöst.

Ich hatte die VertikaleSync deaktiviert um zu sehen wie viele Frames ich wirklich hab und ob ich den Code noch optimieren muss. Die Bewegungen werden jedoch für jeden Frame einzeln, also auch für die, die der Monitor nicht anzeigen kann, berechnet. Dadurch wird die Bewegung umflüssig und es beginnt zu flackern.

Gruß roboter202


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz