Im Fenster schneller als Full-Screen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Im Fenster schneller als Full-Screen

Beitrag von kkrahl »

Hallo

Habe momentan das seltsamen Phänomen das mein Programm im release kompilierten Zustand unter 1024x768 im Fester-Modus mit ca. 2600 fps dahin fährt aber im Full-Screen-Modus aber nur mit ca 1900 fps. :?:

Hat da jemand eine Erklärung dafür?

Dank euch

PS: Nativ Auflösung der Monitors ist 1680x1050.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Im Fenster schneller als Full-Screen

Beitrag von Aramis »

Hängt davon ab, in welcher Auflösung du den Fenstermodus betreibst. Bist du Pixelshader-limitiert, so sind ein paar Pixelchen weniger deutlich schneller. So viel schneller, dass der Performancegewinn durch den exklusiven Modus aufgehoben werden kann. Vielleicht bzw. sogar wahrscheinlich ist aber auch bloß deine Zeitmessung ungenau oder der Grafiktreiber verhält sich im Vollbildmodus etwas anders. Viel interesanter wäre, ob dasselbe Phänomen immer noch besteht wenn du im Bereich von 30-40 Frames bist.

PS: Da fehlte ein 'n' im Titel :-)
Dirk Schulz
Establishment
Beiträge: 130
Registriert: 01.03.2009, 14:21
Alter Benutzername: frittentuete

Re: Im Fenster schneller als Full-Screen

Beitrag von Dirk Schulz »

Hi,

[Ironie]
meinst du nicht, dass beides recht langsam ist? 3000 fps sind doch Standard heutzutage ...
[/Ironie]

Jetzt mal im Ernst ... solch hohe Fps-Raten sind erstmal nicht wirklich vergleichbar, das kann schon innerhalb der Messungenauigkeit liegen. Sonst können vielleicht noch ein paar Routine-Aufgaben des Betriebssystems stören.

Auf jeden Fall kein Grund zur Besorgnis.

Dirk Schulz *wundert sich, worüber sich manche Leute Gedanken machen*
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: Im Fenster schneller als Full-Screen

Beitrag von kkrahl »

Die Auflösung ist ja in beiden Fällen die selbe (1024x768), von da her sollte sich kein Unterschied ergeben. Vor meiner letzten Optimierung, dem Rendern von Text mittels einer Textur (zuvor hatte ich ID3DXFont), war es umgekehrt, da hatte ich im Fester-Modus 1400 fps und im Full-Screen-Modus 1900 fps.

Btw: Die hohen fps zahlen daher das es nur 16 Texturen sind die ausgegeben werde, schreibe gerade ein generisches und per File konfigurierbares User Interface, und das ist nur eine sehr keine Test-UI.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Im Fenster schneller als Full-Screen

Beitrag von kimmi »

Womit berechnest du denn deine FPS?

Kimmi
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: Im Fenster schneller als Full-Screen

Beitrag von kkrahl »

Ich lese bei jedem Renderdurchlauf die SystemZeit mit GetSystemTime und so lange ich mich in der selben Sekunde befinde inkrementiere ich einen Counter, wechselt die Sekunde so gebe ich den Wert als FPS-Zahl aus und resetiere den Counter.

Karl
yonibear
Beiträge: 6
Registriert: 04.02.2006, 19:05
Kontaktdaten:

Re: Im Fenster schneller als Full-Screen

Beitrag von yonibear »

Auch wenn du absolut exakt misst, die Framerate ist in diesen Bereichen überhaupt kein guter Performance-Indikator.
Bei so hohen Frameraten spielt vor allem der Treiber-Overhead eine Rolle, der bei normalen Geschwindigkeiten überhaupt keine Rolle spielt. Von daher macht es auch keinen Sinn, sich Gedanken darüber zu machen, was jetzt genau zum geringfügig anderen Verhalten im Treiber führt, das die Performanceabweichungen verursacht.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Im Fenster schneller als Full-Screen

Beitrag von eXile »

yonibear hat geschrieben:Bei so hohen Frameraten spielt vor allem der Treiber-Overhead eine Rolle, der bei normalen Geschwindigkeiten überhaupt keine Rolle spielt. Von daher macht es auch keinen Sinn, sich Gedanken darüber zu machen, was jetzt genau zum geringfügig anderen Verhalten im Treiber führt, das die Performanceabweichungen verursacht.
Dito. Ob dein Programm nun 0,000384 Sekunden oder 0,000526 Sekunden pro Durchlauf braucht ist eigentlich ziemlich schnuppe - da reicht es schon, dass sich das Betriebssystem sich ab und zu mal "am Rücken kratzt". Sicherlich werden im Treiber leicht andere Code-Pfade abgearbeitet, wodurch das zu erklären ist.

Bei einem 2-GHz-Prozessor sind das (rein rechnerisch!) grad mal 284 Instruktionen mehr (auch wenn die Rechnung so nicht ganz korrekt ist - sie gibt einen groben Richtwert an).
Antworten