Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mai 14, 2024 18:26

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
BeitragVerfasst: Mo Aug 12, 2013 20:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
end hat geschrieben:
Auf einigen meiner Graka's (z.B. eine integrierte SiS und VIA) funktioniert VSync teilweise nicht. Dann flackert es extrem... kein Treiber half bisher (wenn es denn mal Treiberupdates gab...).

Gut, es gibt immer irgendwo Hardware die zickt. Aber SiS und VIA? Bauen die überhaupt noch GraKas?
end hat geschrieben:
Außerdem, wieso sollte der Nutzer nicht sich aussuchen können, ob er auf 30,60,120 oder vollen FPS spielt?

Die Frage sollte doch eigentlich sein, welchen Vorteil hätte er davon, sich das aussuchen zu können? Eine Wahl zwischen Vsync an und volle FPS reicht mir persönlich völlig, und ich kann auch keinen Vorteil darin erkennen noch mehr Abstufungen zu haben. Alles andere führt nämlich entweder zu geringerer Grafikqualität (FPS niedriger als Vsync) oder zu Stromvergeudung (FPS höher als Vsync).

end hat geschrieben:
Weiterhin legt man als Programmierer doch die Framerate fest, wenn man VSync benutzt!?

Eben nicht. Aktiviertes Vsync synchronisiert die Buffer-Swaps mit der Bildwiederholfrequenz des Monitors, das senkt nicht nur den Ressourcenverbrauch, sondern verhindert auch Tearing. Je nach Bildwiederholfrequenz hast du dann eben unterschiedliche Frameraten, mein kürzlich gekaufter Monitor z.B. hat 60Hz und Vsync nutzende Programme dementsprechend 60 FPS. Mein vorheriger Monitor konnte auch 70Hz, da waren es eben 70 FPS.

end hat geschrieben:
Wenn man sie festlegt, darf man nur trotzdem nicht vergessen Timebased-Movement zu nutzen.

Bsp. Ubisoft (oder die die für sie proggen) hat das bei Assassins Creed nicht gemacht => auf nicht mehr ganz so schnellen Rechnern desynchronisieren die Gespräche.

Wenn du mal so richtig Spaß mit einem Ubisoft-Spiel haben willst empfehle ich dir "Prince of Persia: The two Thrones" mit aktiviertem Vsync zu spielen. Ich weiß nicht wie sie das verbocken konnten, aber ohne Vsync spielt es sich wunderbar und mit aktiviertem Vsync sind dann plötzlich Invisible Walls wo keine hingehören, man fällt durch Boden und Wände durch, Gegner verglitchen... Der reine Horror.

@TAK2004: Soweit ich das verstanden habe wollte Vinz nicht den gesamten Prozess mit Vsync drosseln, sondern eben die Grafikdarstellung, und da ist Vsync meiner Meinung nach ungeschlagen. Sleep & Co. sind zwar für andere Subsysteme ganz nett, sie garantieren mir aber nicht dass ich kein Tearing habe.

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Aug 12, 2013 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Sleep ist nicht Plattformunabhängig (eigentlich ganz logisch!), ich habs daher immer wie folgt umgesetzt:
Code:
  1. void sleep(long ms) {
  2.     assert(!"broken by design");
  3. }


Spass beiseite: Üblicherweise sagt sleep lediglich das der aktuelle Thread wechselt und mindestens [Zeit] keine Kontrolle vom OS erhält. Wenn du Sauber arbeiten willst wird das ganze daher also extrem kompliziert (z.B. I/O). Wesentlich stabiler und einfacher dürfte der gute alte Timestamp sein.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Aug 13, 2013 09:08 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Oh, da bin ich wohl von SDL geprägt, da ist es plattformunabhängig implementiert :D

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Aug 15, 2013 19:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
darkinsanity hat geschrieben:
end hat geschrieben:
Außerdem, wieso sollte der Nutzer nicht sich aussuchen können, ob er auf 30,60,120 oder vollen FPS spielt?

Die Frage sollte doch eigentlich sein, welchen Vorteil hätte er davon, sich das aussuchen zu können?

Zum Beispiel eine längere Akkulaufzeit. Mobile Computer liegen doch im Trend - wenn man 5 statt 4 Stunden am Stück zocken kann, weil man sich auf 30 fps beschränkt, dann erscheint mir das schon sinnvoll. Abgesehen davon ist nicht garantiert, dass die CPU durch V-sync tatsächlich entlastet wird. Stichwort Busy Waiting. Ich finde, man sollte dem Spieler größtmögliche Freiheit lassen. Gleichzeitig spricht nichts gegen eine "Standardeinstellungen wiederherstellen"-Funktion.

Edit: Vertipper korrigiert.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Aug 15, 2013 21:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
glAwesome hat geschrieben:
Zum Beispiel eine längere Akkulaufzeit. Mobile Computer liegen doch im Trend - wenn man 5 statt 4 Stunden am Stück zocken kann, weil man sich auf 30 fps beschränkt, dann erscheint mir das schon sinnvoll.

Gut, das ist ein Argument. Aber warum dann nicht einfach ein "wglSwapIntervalEXT(2)"?
glAwesome hat geschrieben:
Abgesehen davon ist nicht garantiert, dass die CPU durch V-sync tatsächlich entlastet wird.

Ich habe noch kein OS gesehen, dass bei ordnungsgemäßer Benutztung bei Vsync pollt. Sollte es trotzdem vorkommen könnte man über eine Kombination von sleep und Vsync nachdenken. Mir geht es darum dass man Vsync nicht durch sleep ersetzen sollte.
glAwesome hat geschrieben:
Ich finde, man sollte dem Spieler größtmögliche Freiheit lassen.

Dem kann ich so nicht zustimmen. Natürlich sollte man den Spieler nicht unnötig einschränken, aber ich halte es auch nicht für eine gute Idee die Optionen zu überfrachten, denn davon hat der Spieler nichts außer Verwirrung. Ob einstellbare FPS dazugehören ist wohl ne Geschmacksfrage, mir ging es aber auch hauptsächlich um die Implementierung davon.

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Aug 16, 2013 09:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
darkinsanity hat geschrieben:
glAwesome hat geschrieben:
Ich finde, man sollte dem Spieler größtmögliche Freiheit lassen.

Dem kann ich so nicht zustimmen. Natürlich sollte man den Spieler nicht unnötig einschränken, aber ich halte es auch nicht für eine gute Idee die Optionen zu überfrachten, denn davon hat der Spieler nichts außer Verwirrung. Ob einstellbare FPS dazugehören ist wohl ne Geschmacksfrage, mir ging es aber auch hauptsächlich um die Implementierung davon.

Da musst du mal Total Biscuit reviews anhören, da gibt es dicke Minuspunkte, wenn die Optionen nicht vollgeknallt sind.

Um die Akkuzeiten zu verbessern braucht es bei Spielen nicht viel, einfach mal das Game optimieren ^^
Wenn man alle Komponenten wenig auslastet, dann brauchen die auch weniger Strom.

Ein Feature, welches auf Mobielen Geräten Strom sparen soll ist SwapChain, welches aber ein DX11.2 Feature ist und auch Windows8 braucht, hat ja quasi jeder xD
Man Rendert die UI getrennt vom Spiel in unterschiedlichen Auflösungen und SwapChain kann dann die Buffer ohne extra GPU kosten skalieren und mixen, da dahinter die Schaltkreise vom Video Controller stecken und nicht die von der GPU.
Im NV und AMD Grafiktreiber kann man z.B. einstellen, dass der Desktop mit Auflösung XY läuft und dann das Bild auf Zielgerät Native Auflösung streched.
Die GPU errechnet also das Bild und schickt es in den RAM-DAC und der Video-Controller streched, mixed und konvertiert das Signal.
Also merkt man das Marketing von MS es auf DX11.2 und Win8 fixiert hat und nicht fehlende Hardware der Grund ist.
Man kann das auch auf der GPU machen macht aber nur noch Sinn, wenn die zu rendernde Szene sehr komplex ist.

MS hat ne Techdemo dazu, ein Micro Machienes Clone, wo die Spielauflösung und UI die Native ist und das Game selber geregelt werden kann.
Das spart ne menge GPU Zeit und ein verpixeltes Spiel mit scharfer UI wirkt garnicht so verpixelt aber spart unmengen an Renderzeit und damit Akku.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 17, 2013 11:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
TAK2004 hat geschrieben:

Um die Akkuzeiten zu verbessern braucht es bei Spielen nicht viel, einfach mal das Game optimieren ^^
Wenn man alle Komponenten wenig auslastet, dann brauchen die auch weniger Strom.


Einfach mal die google i/o sessions reinziehen wenn man lange weile schiebt. Die haben sehr viel Material über den ganzen grafischen Kram in Android und alles wunderbar erklärt :)

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.038s | 17 Queries | GZIP : On ]