AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia OpenGL spiel Frameüberlagerung
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL spiel Frameüberlagerung

Ein Thema von roboter202 · begonnen am 10. Mai 2012 · letzter Beitrag vom 12. Mai 2012
Antwort Antwort
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#1

OpenGL spiel Frameüberlagerung

  Alt 10. Mai 2012, 17:31
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
Christian
i := 0 ; While i = 0 do beep ;

Geändert von roboter202 (10. Mai 2012 um 18:54 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: OpenGL spiel Frameüberlagerung

  Alt 10. Mai 2012, 23:41
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#3

AW: OpenGL spiel Frameüberlagerung

  Alt 11. Mai 2012, 15:02
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:

  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.
Christian
i := 0 ; While i = 0 do beep ;
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: OpenGL spiel Frameüberlagerung

  Alt 11. Mai 2012, 15:06
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)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
roboter202

Registriert seit: 6. Mär 2011
98 Beiträge
 
Delphi 6 Professional
 
#5

AW: OpenGL spiel Frameüberlagerung

  Alt 12. Mai 2012, 11:46
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
Christian
i := 0 ; While i = 0 do beep ;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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