Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 29.04.2005, 19:22 Titel: FPS Verständnisproblem |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 29.04.2005, 19:29 Titel: |
|
|
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" _________________ '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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 29.04.2005, 19:39 Titel: |
|
|
stimmt, wenn du bei jedem durchlauf was in deine Datei schreibst, is dein Prog lahmer als D3DDEVTYPE_REF
zu deiner Frage: Present() projiziert dein ganzes Getue auf den Bildschirm, das is nun mal net soooo schnell
Gruß DirectXer |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 29.04.2005, 19:46 Titel: |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 29.04.2005, 19:49 Titel: |
|
|
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
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 |
|
|
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 29.04.2005, 20:09 Titel: |
|
|
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 _________________ "Dispatcher und Scheduler sind wie Brüder, bloß anders" |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 29.04.2005, 20:24 Titel: |
|
|
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... _________________ 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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 29.04.2005, 20:37 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 29.04.2005, 20:42 Titel: |
|
|
Patrick hat Folgendes geschrieben: | The Lord of Programming
Teil 1 meines neuen Tutorials |
Ah...thx - bin noch gar nich dazu gekommen, mir das anzuschauen _________________ 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 |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 30.04.2005, 08:05 Titel: |
|
|
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 |
|
|
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 30.04.2005, 10:14 Titel: |
|
|
@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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 30.04.2005, 10:28 Titel: |
|
|
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 |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 30.04.2005, 15:01 Titel: |
|
|
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 |
|
|
|