JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=aeae9e08274410fd8e0f79ad5b137504Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

FPS Verständnisproblem
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:22    Titel: FPS Verständnisproblem Antworten mit Zitat

Ich habe mich immer gewundert, das bei anderen Anwendungen immer bei nicht alzu aufwendigen Programmen FPS Zahlen von 100-140 keine Seltenheit waren.

Daraufhin habe ich einmal meine Coderei angesehen und kann mir eine Sache nicht erklären:

Ich habe ein Probe-Programm, was im Prinzip gar nichts macht, außer das Timing, die FPS Werte in eine Datei zu schreiben und BeginScene, EndScene usw. Hier wie das ganze aussieht:

CPP:
else
      {   
         //Hauptschleife
         g_ceTimer->ceUpdateTimer();
         ceClearScene(D3DCOLOR_XRGB(250,0,0));
         ceBeginScene();
         char testFPS[1024];
         sprintf(testFPS,"TestFPS: %.0f\n",g_ceTimer->m_fFrameRate);
         g_ceLog->WriteLog(testFPS);
         ceReturnDevice()->EndScene();
         ceReturnDevice()->Present(NULL, NULL, NULL, NULL);
      }


Lass ich das ganze gerumse mit BeginScene(), EndScene usw. weg, schreibt er mir werte im Durchschnitt um 550-600 in die Logdatei, so far so good.

Sobald die Zeile: ceReturnDevice()->Present(NULL, NULL, NULL, NULL); dazu kommt, reduziert sich die FPS Zahl im Logfile auf 50-55...

Kann mir jemand erklären warum das so ist? Und vor allem... kann das wirklich richtig sein!?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:29    Titel: Antworten mit Zitat

Liegt an der Vertical Syncronisation. Achja: Ist doch net Dein ernst innerhalb der Hauptschleife etwas in eine Datei zu schreiben? Ich sag nur: "Waiting for next frame" Very Happy
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:39    Titel: Antworten mit Zitat

stimmt, wenn du bei jedem durchlauf was in deine Datei schreibst, is dein Prog lahmer als D3DDEVTYPE_REF Wink

zu deiner Frage: Present() projiziert dein ganzes Getue auf den Bildschirm, das is nun mal net soooo schnell Very Happy

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:41    Titel: Antworten mit Zitat

DirectXer
Ganz genau, vorallem ist es sehr langsam wenn man VSync an hat Very Happy
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:46    Titel: Antworten mit Zitat

tja, aber ich finde es ist Bldösinn, das VSync die Bildwiederholrate verringert. Es ist unmöglich da einen Unterschied zu sehen, da selbst wenn man 1000 Bilder rendert der Monitor nur 50 darstellen kann.
VSync ist zur Verbesserung der Bildqualität, und macht der Framerate gar nix. Kein Mensch braucht 500 Frames, 50-100 reichen locker aus, bzw. man kann gar net mehr Frmaes gebrauchen, als der Bildschirm anzeigen kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 19:49    Titel: Antworten mit Zitat

Jonathan_Klein
Beim VSync geht es um die Frequenzen nicht explosiv um die FPS. Bis vor 5 Jahren wärste froh gewesen wenn VSync überall an war Wink

Merke: VSync != FPS
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 20:09    Titel: Antworten mit Zitat

Das stimmt.
Bei DirectX bedeutet Vertical Synch nur eine Synchronisation zwischen FPS und Wiederholungsfrequenz um horizontale Schlieren zu vermeiden.

Im ursprünglichen und technischem Sinne ist das Vertical Synch ein Synchronisationssignal, welches angibt, wann ein komplettes Bild auf dem Bildschirm rasterisiert wurde und der Buffer gelöscht wird.
Es gibt bei der Erzeugung einen horizontalen und einen vertikalen Zähler, um eine Pixelerzeugung zu synchronisieren.
Jetzt bitte nicht auf Feinheiten achten, ist nur eine Groberklärung!
Ich hab auch keine Lust jetzt die Schaltbilder der Flip Flops aufzuzeichnen Wink
_________________
"Dispatcher und Scheduler sind wie Brüder, bloß anders"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 20:24    Titel: Antworten mit Zitat

Wo wir schon dabei sind: Wo schaltet man das eigentlich an/aus?
Es wurde schon viel darüber gesprochen, dass man es testweise mal ausmachen sollte, aber ich glaub noch nie, wo... Embarassed
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 20:28    Titel: Antworten mit Zitat

The Lord of Programming
Teil 1 meines neuen Tutorials Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 20:37    Titel: Antworten mit Zitat

naja, ich habe net Behauptet, das FPS==VSync ist, ich wollte das nur mal gesagt haben, weil Idioten wie die GameStar schreiben, VSync würde die Framerate verrignern, was so einfach totaler Blödsinn ist.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.04.2005, 20:42    Titel: Antworten mit Zitat

Patrick hat Folgendes geschrieben:
The Lord of Programming
Teil 1 meines neuen Tutorials Wink

Ah...thx - bin noch gar nich dazu gekommen, mir das anzuschauen Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 30.04.2005, 08:05    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
naja, ich habe net Behauptet, das FPS==VSync ist, ich wollte das nur mal gesagt haben, weil Idioten wie die GameStar schreiben, VSync würde die Framerate verrignern, was so einfach totaler Blödsinn ist.

Soweit ich weiß ist das kein blödsinn. einige treiber versuchen soweit ich weiß bei aktiviertem vsync eine konstante framerate beizubehalten, sprich das spiel läuft nicht immer mit voller fps zahl sondern mit einer geringeren, damit die fps konstant bleiben können.

kann aber auch sein, dass ich da mal was falsches gelesen habe. Weiß garnicht mehr ow ic das gelesen habe *g*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 30.04.2005, 10:14    Titel: Antworten mit Zitat

@Lord

Ich bin mal so frei und post es, sofern du es noch nicht gefunden hast

DX (c++)
CPP:
D3DPRESENT_PARAMETERS PParams;
ZeroMemory(&PParams,sizeof(PParams));
...
...
PParams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;



MDX (C#):

Code:

PresentParameters presentParams = new PresentParameters();
...
...
presentParams.PresentationInterval = PresentInterval.Immediate;

_________________
"Dispatcher und Scheduler sind wie Brüder, bloß anders"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 30.04.2005, 10:28    Titel: Antworten mit Zitat

Catscratch1
Du hast vergessen zu erwähnen, das man den VSync nicht im Windowedmode deaktivieren sollte. CreateDevice schlägt dann fehl, weil es Frequenzkonflikte zwischen Grafikausgabe von DX und von der GDI gibt.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 30.04.2005, 15:01    Titel: Antworten mit Zitat

Also das mit der Datei war mir ja schon klar, das es dann langsamer wird. War ja auch nur zu Testzwecken. Die Framerate bekomm ich mit 50-55 aber auch wenn ich mir die auf dem Bildschirm anzeigen lasse. Mit anderen Worten, sobald ich das VSync abschalte kommt das auch anders?!
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum