PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : triple buffering forcierern


lilgefo~
2005-05-20, 14:02:37
Hallo

ich habe neulich mal wieder Doom 3 installiert und da dort das Tearing extrem negativ auffällt, habe ich Vsync aktiviert. Damit ist das Tearing zwar weg aber da mein Rechner es leider nicht schafft konstant mehr als 60fps zu berechnen artet das in üble Performancedrops aus, so dass kein richtiger Spielspaß aufkommen will.

Doom 3 aktiviert bei Vsync anscheinend nicht den TripleBuffer um die Framedrops abzufangen. Nun habe ich mir noch einmal den Artikel über Vsync durchgelesen und war recht erfreut, dass sich selbiger im Atuner aktivieren lässt.
Allerdings sind die Bilder wohl nicht mit einem aktuellen Atuner gemacht worden, da ich im neuesten Atuner keinerlei Optionen hierfür finde, weder unter Direct 3d noch unter Open GL.

Daher habe ich einmal mehrere Fragen:

1) Muss Triple Buffering durch die Engine unterstützt werden, oder wird diese Entscheidung von der GPU/ dem Treiber getroffen?
2) Wo kann man im Atuner Triple Buffer aktivieren oder gibt es ein anderes Tool mit dem ich selbigen forcieren kann?

zeckensack
2005-05-20, 15:12:48
Hallo

ich habe neulich mal wieder doom 3 installiert und da dort das Tearing extrem negativ auffällt habe ich Vsync aktiviert. DAmit ist das Tearing zwar weg aber da mein Rechner es leider nicht schafft konstant mehr als 60fps zu berechnen artet das in üble performancedrops aus, so dass kein richtiger SPielspaß aufkommen will.

Doom 3 aktiviert bei Vsync anscheinend nicht den TripleBuffer um die framedrops abzufangen. Nun habe ich mir noch einmal den Artikel über VSYNC durchgelesen und war recht erfreut, dass sich selbiges im Atuner aktivieren lässt.
Allerdings sind die Bilder wohl nicht mit einem aktuellen Atuner gemacht worden, da ich im neuesten Atuner keinerlei Optionen hierfür finde, weder unter Dircet 3d nich unter Open GL.

Daher habe ich einmal mehrere Fragen:

1) Muss Triple Buffering durch die Engine unterstützt werden, oder wird diese Entscheidung von der GPU/ dem Treiber getroffen?
2) Wo kann man im Atuenr Triple Buffer aktivieren oder gibt es ein anderes Tool mit dem ich selbiges forcieren kann?1)Unter OpenGL können Applikationen dies nicht selbst kontrollieren. "Vernünftige" Treiber stellen aber bei Vollbildanwendungen mit VSync Triple Buffering automatisch ein, sofern dafür ausreichend Grafikspeicher vorhanden ist.
Unter DirectX Graphics existiert eine Applikationskontrolle. Dort kann auch -- wenn das Spiel nicht von sich aus TB anfordert -- durch kleinere Eingriffe das ganze erzwungen werden. ZB mit Demirug's DirectX Tweaker (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=207562).

2)Treiberseitig erzwingen kann man dies unter OpenGL nur mit ATI-Karten. Da es bei NV dafür keinen Registry-Schlüssel gibt, und auch wie gesagt keine Applikationskontrolle möglich ist, wirst du mit Tools, welcher Art auch immer, IMO nichts ausrichten können.

lilgefo~
2005-05-20, 15:39:05
Ersteinmal danke für die Antwort.


Nun stellt sich mir aber folgende Frage, du hast geschrieben

1)Unter OpenGL können Applikationen dies nicht selbst kontrollieren. "Vernünftige" Treiber stellen aber bei Vollbildanwendungen mit VSync Triple Buffering automatisch ein, sofern dafür ausreichend Grafikspeicher vorhanden ist.

Wer entscheidet bzw. wie wird entschieden ob meine Graka genug Speicher
hat? Wird diese Frage applikationsspezifisch geklärt oder ist das allgemein im Treiber verankert so nach dem Motto if graka-ram <xyzMB then kein triplebuffer? Hat eine höhere AGP Aperture Size auch eine Auswirkung auf dieses Problem?

edit: Der von dir genannte Direct X Tweaker startet bei mir leider nicht bzw. unterbricht den Start mit einer fehlermeldung. Gibt es vllt noch ein anderes Tool das mir erlaubt den Triple Buffer unter D3D zu aktivieren?

zeckensack
2005-05-20, 16:30:58
Ersteinmal danke für die Antwort.


Nun stellt sich mir aber folgende Frage, du hast geschrieben



Wer entscheidet bzw. wie wird entschieden ob meine Graka genug Speicher
hat? Wird diese Frage applikationsspezifisch geklärt oder ist das allgemein im Treiber verankert so nach dem Motto if graka-ram <xyzMB then kein triplebuffer? Hat eine höhere AGP Aperture Size auch eine Auswirkung auf dieses Problem?Jein.
Ob der NVIDIA-Treiber das applikationsspezifisch macht, weiß ich nicht, ich denke aber nicht. Dann müsste es IMO die Möglichkeit geben über die nvapps.xml TB zu erzwingen, und das ist nicht der Fall.

Eine sinnvolle Logik wäre einfach über die Auflösung und die AA-Settings zu gehen, da diese den Framebuffer-Verbrauch bestimmen. Wenn selbst mit aktivem TB zB "nur" ein Drittel des Graka-Speichers für den Framebuffer benötigt wird, dann würde es nicht wehtun dies zu aktivieren.

Dies ist nur eine generelle Überlegung. Es scheint bei dir ja generell kein TB zu geben, also macht es NVIDIA wohl einfach nicht.
edit: Der von dir genannte Direct X Tweaker startet bei mir leider nicht bzw. unterbricht den Start mit einer fehlermeldung.Das dürfte daran liegen, dass der DX-Tweaker das .NET-Framework benötigt.
Gibt es vllt noch ein anderes Tool das mir erlaubt den Triple Buffer unter D3D zu aktivieren?Vielleicht kann es 3DAnalyze (http://www.3dcenter.de/downloads/3d-analyze.php).
Für diesen Eingriff muss sich das Tool zwischen die Applikation und die DX-Runtime setzen, also ein "Wrapper" sein.

lilgefo~
2005-05-20, 16:58:21
Das dürfte daran liegen, dass der DX-Tweaker das .NET-Framework benötigt.



Ja du hast recht, nachdem ich das. Net framework installiert habe startet das Programm.