PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL - wie erzwinge ich Triple Buffering?


aths
2002-04-16, 15:04:30
Ich habs in GTU enabled. Offenbar nutzt Quake aber nur Double Buffering (entweder 42 oder 85 fps) - wie erzwinge ich Triple Buffering?

Kai
2002-04-16, 18:36:57
Enable es doch in Q3A, oder klappt das nicht?

ow
2002-04-16, 19:08:54
Würd mich dann auch mal interessieren wie das geht, Kai.

Unregistered
2002-04-16, 19:19:17
Hab grad mal in die Konsole Command -Liste geschaut, also da drin gibts nichts, was mich an double/triple-buffering erinnert...

Kann man das denn ÜBERHAUPT irgendwo mittels des GTUs enablen?

Dieses Setting steckt schon seit Ewigkeiten im Detonator, es scheint jedoch wieder mal ein Setting à la "Enable the driver to use triple buffering if the application calls for it" zu sein.

Nimm mal ne Software, die definitiv TB benutzt, und schalt dann im GTU das TB ab!Meckert die Software oder benutzt vielleicht automatisch DB?

Kennung Eins
2002-04-16, 19:19:53
hmm..erstmal einloggen.
das da oben war ich.

aths
2002-04-16, 19:58:59
KennungEins,

letztlich geht es mir darum, folgendes Problem zu lösen: In Quake3 hab ich 85 oder 42 fps. Nichts dazwischen.

Xmas meint nun, das sei auch nicht mit Triple Buffering zu lösen, aber das würde ich gerne mal austesten.

Ich kenne keine Anwendung, die definitiv Triple Buffering nutzt.

ow
2002-04-16, 20:06:38
Originally posted by aths


Xmas meint nun, das sei auch nicht mit Triple Buffering zu lösen, aber das würde ich gerne mal austesten.



Da irrt er.

Da die Render-Pausen für den Chip bis zum Bufferswap entfallen sind die fps mit triple-buffering im Mittel deutlich höher, ich schätze mal hier auf etwa 55fps.

ow
2002-04-16, 20:11:08
Originally posted by aths


Ich kenne keine Anwendung, die definitiv Triple Buffering nutzt.


OGL oder D3D?

Kennung Eins
2002-04-16, 20:12:21
Originally posted by ow
Da die Render-Pausen für den Chip bis zum Bufferswap entfallen sind die fps mit triple-buffering im Mittel deutlich höher, ich schätze mal hier auf etwa 55fps. Zitat von dir Selber (aths) dazu:

Triple und Quad-Buffering erhöhen die Latenzzeit, ermöglichen dafür
allerdings eine etwas ausgeglichenere Framerate. Triple und erst recht
Quad-Buffering lohnen nur bei ohnehin hohen Frameraten, da die Latenzzeit
sonst zu groß wird.

Das ist es doch, oder nicht?
Nun muß man TB nur noch einschalten können...

[UTFC]Slá¥èr
2002-04-16, 20:37:26
schon mal mit NVHardPage probiert ?
Gibbet Hier (http://www.guru3d.com/nvhardpage)

Kennung Eins
2002-04-16, 20:42:56
argh...das benutzt doch genau die gleiche routine!

pervert
2002-04-16, 22:46:57
Originally posted by ow



OGL oder D3D?

Wüsste ich auch gerne :)

Unter D3D empfehle ich jedenfalls Max Payne.

Xmas
2002-04-17, 00:28:10
Originally posted by ow
Da irrt er.

Da die Render-Pausen für den Chip bis zum Bufferswap entfallen sind die fps mit triple-buffering im Mittel deutlich höher, ich schätze mal hier auf etwa 55fps.
Das hatten wir ja letztens schon diskutiert, das stimmt so natürlich.

Aber die Renderpausen fallen nicht immer weg. Wenn zwei aufeinanderfolgende Frames länger als einen Refreshzyklus dauern, muss der Chip auch warten. Ich weiß nicht genau wie der Framecounter in Q3 funktioniert, aber wenn er immer die Zeit des vorangegangenen Frames misst, dann passiert folgendes: Statt wie bei Double Buffering immer nur zwischen 42 und 85 zu wechseln, gibt es bei jedem Wechsel von "langen" zu "kurzen" Frames einen Zwischenwert.
Treten die Wechsel häufig auf, bringt das sehr viele Zwischenwerte. Gibt es aber nur ab und zu einen Wechsel, dann sieht das z.B. so aus:
42, 42, 42, 57, 85, 85, 85, 85, ..., 85, 85, 64, 42, 42, 42, 42.

Das war es was ich damit meinte.

pervert
2002-04-17, 00:35:20
Ob das jetzt jemand so ganz verstanden hat? Ich habe bei Max Payne jedenfalls eine vollkommen "flüssige" FPS-Anzeige (FRAPS), wenn ich Tripple Buffering aktiviere, aber eben geringer als ohne Sync. Jeder FPS-Wert unterhalb der Bildwiederholrate ist zu erreichen.

Birdman
2002-04-17, 01:32:58
also ich kann hier ned viel dazu sagen, da ich eigentlich immer und jedes game mit vsync off zocke. (seit ich auf nv/ati hardware setze)ich weiss nur dass ich mit ner TNT2U und Gefrosch damals bei quake2 NIE triplebuffering hatte, egal ob ich in den grakaoptionen das bit gesetzt habe oder ned...
voodoo2 SLI und voodoo3 konnten das aber problemlos, und das konnte man zum einem messen und auch sehen. (triple war viel flüssiger vor allem mit vsync on)
beim frosch brachte ich bei q2 nie ein so flüssigen bild hin und auch heute noch dünkt mich q2 nimmer zu gut zum zocken wie damals mit 3dfx power. (zocke noch ab und an q2 an lans)

evtl. halt etwas das nv nie gelernt hat, opengl und triplebuffering...what a shame

Xmas
2002-04-17, 01:39:31
Originally posted by Birdman
triple war viel flüssiger vor allem mit vsync on
Vor allem? Also wenn Triple Buffering ohne VSync auch nur ein bisschen flüssiger war, müssen die Treiberprogrammierer ziemlichen Müll beim Double Buffering abgeliefert haben. Triple Buffering ohne VSync bringt nämlich prinzipiell nichts.

mirp
2002-04-17, 06:40:36
Originally posted by aths
KennungEins,

letztlich geht es mir darum, folgendes Problem zu lösen: In Quake3 hab ich 85 oder 42 fps. Nichts dazwischen.

Xmas meint nun, das sei auch nicht mit Triple Buffering zu lösen, aber das würde ich gerne mal austesten.

Ich kenne keine Anwendung, die definitiv Triple Buffering nutzt.
Wie kommen bei Dir die 85 fps eigentlich zustande? Was hast Du bis jetzt geändert?

Wenn man nichts an den Quake3-Einstellungen ändert, ist VSync off und es werden einfach nicht mehr als 85 fps berechnet (default: com_maxfps 85).

aths
2002-04-17, 11:53:56
mirp,

maxfps hab ich auf 999 gesetzt. In 1024x768 nutze ich 85 Hz, daher die Framerate 85 Hz mit Vsync. Leider leider, Frau Schneider, oft genug auch nur 42 fps, eben 85/2. Und eben das nervt mich. 42 fps ist mir zu wenig.

Birdman
2002-04-17, 12:31:19
Originally posted by Xmas

Vor allem? Also wenn Triple Buffering ohne VSync auch nur ein bisschen flüssiger war, müssen die Treiberprogrammierer ziemlichen Müll beim Double Buffering abgeliefert haben. Triple Buffering ohne VSync bringt nämlich prinzipiell nichts.

kloar, das stimmt schon, aber es war nu mal so, dass ich mit triplebuffering mehr fps hatte als mit doublebuffering, auf der v3 machte dies ~10% speed aus...daher wars flüssiger, auch wenn ich ohne vsync zockte ;)

mirp
2002-04-17, 15:02:10
Mit "com_maxfps 0" schaltet man es ganz ab. Aber das hilft bei dem Problem wohl auch nicht.

Unregistered
2002-04-18, 13:02:26
X-Mas hat auch schon erwähtn.

Tripple Buffering bringt nur etwas in Verbindung mit V-Sync auf ON.
Wieso das genauso ist weiss ich nicht 100% wenn ein Game das aber anbietet habe ich es immer aktiviert.

Fifa hat immer tripple Buffering zur Auswahl gehabt.

gruss Labberlippe

Xmas
2002-04-19, 01:38:07
Originally posted by Birdman
kloar, das stimmt schon, aber es war nu mal so, dass ich mit triplebuffering mehr fps hatte als mit doublebuffering, auf der v3 machte dies ~10% speed aus...daher wars flüssiger, auch wenn ich ohne vsync zockte ;)
Kurios...

Kurze Erklärung warum Triple Buffering ohne VSync nichts bewirken sollte:
Man stelle sich vor, der Chip hat drei Puffer, A, B und C. A wird vom RAMDAC ausgegeben, der Chip rendert in B. Ist der Chip fertig mit einem Frame, gibt es zwei Möglichkeiten:
a) VSync ist an: Der RAMDAC ist wahrscheinlich gerade mittendrin, A auszugeben. Der Buffer Swap muss also warten, weil ja kein Tearing entstehen soll. Da B fertig ist, rendert der Chip in C weiter, um nicht untätig warten zu müssen, wie es bei Double Buffering sofort passieren würde.
b) VSync ist aus: Der RAMDAC ist mittendrin, A auszugeben. Egal, VSync ist ja aus! Also sofort Buffer Swap: RAMDAC gibt B aus, A ist wieder "frei". Der Chip rendert also sofort in A weiter, Buffer C wird nie gebraucht und nimmt sinnlos Speicherplatz weg.

Kennung Eins
2002-04-23, 20:34:53
Hmm hab grad festgestellt (dank Unwinder), daß das Triplebuffering Setting zwar noch im Detonator drin ist, jedoch nix mehr macht.
Das ist zum Fake-Setting mutiert.

Bei alten Detos ( <6.xx ) müßte es aber eigendlich noch gehen.