OpenGL Einstellungen

Installation and usage on Windows / Installation unter Windows
Nostromo
Posts: 99
Joined: 23 Sep 2011 18:28
Location: RLP

OpenGL Einstellungen

Post by Nostromo »

Hallo,

trotz meiner eigentlich ausreichenden Hardwarekonfiguration kämpfe ich immer noch mit den Einstellungen der Grafikleistung von HELI-X. Bei einigen Parametern habe ich bereits herausgefunden, dass sie ziemlich leistungszehrend sind (z.B. Antialiasing) und bei einigen habe ich herausfinden können, dass sie Leistungsvorteile bringen und einen deutlichen Einfluß auf den flüssigen Ablauf der Grafik haben (z.B. Display Lists und VBOs).

Bei anderen Einstellungen erhalte ich z.T. widersprüchliche Ergebnisse bzw. Ergebnisse, die sich nicht in einer Art und Weise auf die Grafikleistung und auf den flüssigen Bildablauf auswirken, wie ich es erwarten würde. Wie z.B. bei der Auflösung, der Farbtiefe, und der Bildwiederholfrequenz im Pulldown-Menue "Auflösung", der maximalen VPS-Zahl und der VSync-Einstellung.

Hierzu habe ich noch ein paar Fragen.

Kann es sein, dass sich die Einstellungen im Feld "Auflösung" bei der OpenGL-Einstellung nur auf die Darstellung der Hintergrundgrafik beziehen, nicht jedoch auf die Darstellung des Helikopters selbst? Selbst wenn ich dort eine Einstellung von 640x480 wähle, wird der Heli in unveränderter Auflösung und Bildschärfe dargestellt. Wie ist hier der Zusammenhang zwischen den fotografischen SkyBox 3D Hintergründen und den synthetisch berechneten "Scene 3D" Hintergründen?

Kann es sein, dass die Einstellung im Feld "Antialiasing" einen Einfluß sowohl auf die Darstellung des Helis, als auch des Hintergrunds haben? Also sozusagen auf die gesamte, dargestellte Grafik?

Wie ist der Zusammenhang zwischen der Einstellung "Auflösung" in den OpenGL-Einstellungen und der Einstellung "Videogröße" im Konfigurationsmenue?

Welchen Sinn macht es, die Videogröße "größer" einstellen zu können als es die Fenstergröße zuläßt aber umgekehrt das Fenster quasi automatisch zu verkleinern wenn die eingestellte "Videogröße" kleiner als die "Fenstergröße" wird?

Welcher Zusammenhang besteht zwischen den Einstellungen der Videokarte im Bezug auf Farbtiefe und Bildwiederholfrequenz und den Einstellungen dieser Parameter in den OpenGL-Einstellungen im Feld "Auflösung"? Wäre es nicht sinnvoll, die für die Videokarte gewählten Einstellungen bezüglich Farbtiefe und Bildwiederholfrequenz für die OpenGL Parameter von HELI-X zu übernehmen anstatt dem Benutzer wenig sinnvolle weitere Einstellungen anzubieten, die lediglich weitere Grafikleistung aufzehren weil z.B. eine wenig sinnvolle Umsetzung einer 16 Bit Farbtiefe von HELI-X auf eine 32 Bit Farbtiefe des Grafikkarten-Displays Umgerechnet werden muß? Macht es hier überhaupt Sinn, im Bezug auf Farbtiefe und Bildwiederholfrequenz in den OpenGL-Einstellungen von HELI-X andere Einstellungen zu wählen als von den Bildschirmeinstellungen des Betriebssystems bzw. der Grafikkarte vorgegeben?

Sorry, dass ich diese ganzen Fragen stelle aber wenn mir die Zusammenhänge zwischen den jeweiligen Auswirkungen der Einstellungen von HELI-X bzw. von Java im Bezug zu den Einstellungen des Betriebssystems bzw. der Grafikkarte oder den Leistungseinstellungen des Grafiktreibers besser bekannt wären, könne ich wesentlich besser abschätzen, welche Konfiguration in HELI-X mir helfen würden, die Grafikleistung zu verbessern als ständig irgendwelche Kombinationen der Einstellungen auszutesten, deren Anzahl aufgrund der vielfältigen Parameter kaum erfassbar sind.

Es wäre aus meiner Sicht auch wünschenswert wenn es zu dem Thema einige Hinweise als Richtschnur geben würde um dem Benutzer aufzuzeigen, mit welchen Parametern man die Leistungsfähigkeit der Grafik von HELI-X optimal einstellen kann und welche Einstellungen keine Auswirkung bringen bzw. sogar kontraproduktiv sind weil sie unnötige zusätzliche Umrechnungen verursachen, die nur Leistung kosten.

Eigentlich sollte HELI-X bei meiner Hardware (NVidia Geforce GT 520, Intel E6750 Core vPro Duo CPU mit 2.66GHz, Windows 7) bei guter Auflösung eine absolut flüssig laufende Grafik erzeugen aber das bekomme ich leider nicht hin. Ich habe schon jede Menge an Kombinationen aller möglicher Einstellungen durchprobiert aber flüssig läuft es leider nur, wenn ich die Fenstergröße auf 1024x768 reduziere.

Ich habe auch den Verdacht, dass man dem PC Berechnungen aufbürdet, die z.B. die GPU der Grafikkarte besser erledigen könnte. Ich habe keine Ahnung ob Java überhaupt eine vorhandene OpenCL oder CUDA-Schnittstelle unterstützt. Es scheint so, dass die CPU mit den 3D Grafikberechnungen überlastet ist während die GPUs der Grafikkarte Däumchen drehen. Das sollte so nicht sein. Vielleicht kann man hier noch etwas verbessern.

Vielen Dank für das Verständnis.

Beste Grüße,

Notker
User avatar
Michael
Posts: 1854
Joined: 25 May 2008 16:11
Location: Germany
Contact:

Re: OpenGL Einstellungen

Post by Michael »

Hallo,

viele Fragen, ich versuche mal strukturiert zu antworten.

OpenGL-Einstellungen:

1. Die Auflösung und farbtiefe hat KEINE Bedeutung, sie ist in HELI-X 4.2 auch gar nicht mehr drin.
2. Antialiasing macht die Darstellung von Heli und Hintergrund schöner. Sie Kostet Performance. Wie weit man da gehen kann,hängt von der Grafikkarte ab.
3. VBOs und Display-Lists sind algorithmische Tricks. Je nach Implementierung des Treibers und der Grafikhardware können sie die Performance steigern. Einige Grafikkarten unterstützen das aber nicht.

Wie kann man die Darstellung flüssoiger machen?

1. Antialiasing aus oder klein stellen
2. Die Farbtiefe des Desktops auf 16 Bit (statt 32 Bit) stellen. Das merkt man im normalene Alltag eher nicht.
3. Szenen mit kleinerer Auflösung verwenden (SkyBox1024 oder SkyBox)
4. Manche Helis sind mit extrem vielen Polygonen aufgebaut. Die vermeiden.
5. Fenster kleiner machen.
6. Aktuelle Treiber für die Grafikkarte installieren (vom Hersteller der Grafikkarte)
7. Keine unnötigen Programme im Hintergrund parallel laufen lassen.
Impementierung:
1. Sämtliche Grafikberechnungen laufen - wie es sich gehört - auf der Grafikkarte.
2. Die Physik läuft nicht auf der Grafikkarte sondern auf der CPU. Der Grund ist, dass hier so komplexe Algorithmen verwendet werden, die nicht einfach mit CUDA zu implementieren sind. Ausserdem soll die Grafikkarte die Grafik machen und nicht die Physik.
3. Bei den meisten Rechnern ist die maximale Framerate durch die Grafikkarte und nicht durch die CPU limitiert.

Michael
Nostromo
Posts: 99
Joined: 23 Sep 2011 18:28
Location: RLP

Re: OpenGL Einstellungen

Post by Nostromo »

Hallo Michael
Michael wrote: viele Fragen, ich versuche mal strukturiert zu antworten.
Vielen Dank für die schnelle Antwort auf meine Fragen. Im Großen und Ganzen hilft mir das schon ein gutes Stück weiter.
Michael wrote: 1. Die Auflösung und farbtiefe hat KEINE Bedeutung, sie ist in HELI-X 4.2 auch gar nicht mehr drin.
Ok, die Aussage genügt mir. Obwohl die Angaben über Farbtiefe und Wiederholfrequenz in der aktuellen Version (4.2?) im Menue "Auflösung" bei den OpenGL Einstellungen noch drin sind. Hat die Wiederholfrequenz (z.B. 60 oder 75Hz) denn einen Einfluß?
Michael wrote: 2. Antialiasing macht die Darstellung von Heli und Hintergrund schöner. Sie Kostet Performance. Wie weit man da gehen kann,hängt von der Grafikkarte ab.
Antialiasing ist bei mir wohl der größte Performancefresser. Den Wert kann ich höchstens auf 2x stellen, drüber geht nichts mehr. Zumindest bei voller Fenstergröße.
Michael wrote: 3. VBOs und Display-Lists sind algorithmische Tricks. Je nach Implementierung des Treibers und der Grafikhardware können sie die Performance steigern. Einige Grafikkarten unterstützen das aber nicht.
Die haben bei mir einen deutlich positiven Einfluß auf die Performance wenn ich die Häckchen im Menue setze.

Michael wrote: Wie kann man die Darstellung flüssoiger machen?

1. Antialiasing aus oder klein stellen
ok, leuchtet ein.
Michael wrote: 2. Die Farbtiefe des Desktops auf 16 Bit (statt 32 Bit) stellen. Das merkt man im normalene Alltag eher nicht.
Also dazu habe ich mal eine Frage weil ich im Internet Gegenteiliges gelesen habe. In diesem Artikel (leider finde ich ihn nicht mehr) stand, dass die heutigen Grafikkarten schon hardwaremäßig auf 32 Bit Farbtiefe ausgelegt wären und dass die meisten Anwendungen sich ebenso nach dieser (Standard-) Einstellung richten würden und entgegen der weitläufig verbreiteten Annnahme (Zitat) wäre eine Einstellung auf eine Farbtiefe von 16 Bit nicht performanter, ganz im Gegenteil, das würde nichts bringen. Es ist natürlich absolut keine Frage, dass das menschliche Auge die beiden Einstellungen nicht unterscheiden kann aber vielleicht erhalten wir ja noch weitere Meinungen/Aussagen/Hinweise zu dieser Thematik. Mich würde nämlich genau dieser Punkt sehr interessieren. Nicht nur im Bezug auf HELI-X.

Michael wrote: 3. Szenen mit kleinerer Auflösung verwenden (SkyBox1024 oder SkyBox)
Dazu habe ich auch eine spezielle Frage. Bringt es in diesem Fall etwas, wenn ich z.B. die horizontale Auflösung auf 1024 Pixel stelle und einen Hintergrund im SkyBox1024 Format wähle? Oder hat das eigentlich eher nichts zu sagen? Rein gefühlsmäßig sollte man annehmen, dass die am besten zusammen harmonieren.
Michael wrote: 4. Manche Helis sind mit extrem vielen Polygonen aufgebaut. Die vermeiden.
Den Unterschied merke ich eigentlich nur an der längeren Ladezeit aber ansonsten fallen mir bei diesen Modellen während des Flugs keine Unterschiede auf. Oder sie sind im Verhältnis zu den übrigen "Leistungsfressern" so moderat, dass ich sie nicht bemerke.
Michael wrote: 5. Fenster kleiner machen.
Naja, das käme aus meiner Sicht nur in Frage wenn sonst nichts mehr geht. Obwohl eine Verkleinerung des Fensters sehr viel in der Performance ausmacht.
Michael wrote: 6. Aktuelle Treiber für die Grafikkarte installieren (vom Hersteller der Grafikkarte)
Habe ich schon installiert.
Michael wrote: 7. Keine unnötigen Programme im Hintergrund parallel laufen lassen.
Ok, dazu schreib ich jetzt mal nichts. ;-)
Michael wrote: Impementierung:
1. Sämtliche Grafikberechnungen laufen - wie es sich gehört - auf der Grafikkarte.
2. Die Physik läuft nicht auf der Grafikkarte sondern auf der CPU. Der Grund ist, dass hier so komplexe Algorithmen verwendet werden, die nicht einfach mit CUDA zu implementieren sind. Ausserdem soll die Grafikkarte die Grafik machen und nicht die Physik.
3. Bei den meisten Rechnern ist die maximale Framerate durch die Grafikkarte und nicht durch die CPU limitiert.
Dazu habe ich auch eine Frage, bzw. Anmerkung. Soweit mir bekannt ist, sollten die Berechnungen der räumlichen Objekte, also z.B. Heli und die Objekte der Scene 3D Hintergründe über DirectX von den GPU der Grafikkarte berechnet werden. Lustigerweise geht bei mir die Auslastung der GPU der Grafikkarte schon gegen 100% wenn HELI-X nur gestartet ist aber der Heli ruhend am Boden steht. Und einer der beiden CPU-Kerne ist in diesem Zustand auch schon auf Vollast. Naja, dass da kein Raum mehr für eine weitere Leistungsübernahme durch die Grafikkarte vorhanden ist, brauche ich nicht explizit zu erklären. Und da HELI-X bzw. Java nicht multiprozessorfähig ist, sind praktisch schon beim Start alle Leistungsreserven belegt, die der Rechner bringen kann. Ok, das hat auch was mit dem Verhalten der Java Engine zu tun, dass die CPU ständig auf Vollast läuft (also 1 Kern der CPU) aber was ist mit der GPU? Warum läuft die ständig auf Vollgas?

Das Verhalten ist schon recht seltsam. Etwa eine Einstellungssache?

Beste Grüße,

Norbert
ThomasC
Posts: 180
Joined: 29 Mar 2012 16:29
Location: Germany

Re: OpenGL Einstellungen

Post by ThomasC »

Servus Norbert,

da ich Heli-X auch bisweilen auf einem Netbook (Intel Atom n270 Prozessor / GMA945 Grafik) nutze, hier ein paar meiner Erfahrungen für Dich:
- Verringerung der Farbtiefe Desktop von 32bit auf 16bit brachte einen Performancegewinn: 32bit 6 bis 10 FPS, 16bit ca. 30 FPS (gleicher Airport und gleicher Heli). Zuerst konnte ich nur die einfach gestrickten Heli-X-Modelle nutzen. Der Unterschied ist sichtbar. Da ich auf dem Netbook mit Grafikprofilen arbeiten kann, schalte ich nur für Heli-X-Betrieb auf 16bit runter. Durchaus denkbar, daß bei richtig guten Grafikkarten 32bit schneller läuft da kein Mapping der Farben stattfindet. Richtig gute habe ich keine, da ich im Allgemeinen kein Videospielfreak bin. Ich brauch 3D derzeit nur für Heli-X.
- Update auf Heli-X 4.2 (Option für Multikernunterstützung) brachte eine deutliche Besserung, obwohl der Prozessor im Grunde nur Multithreading unterstützt, er hat nur einen Kern. Jetzt kann ich fast alle Helis auf dem Gerät mit 30fps nutzen. Schalte also einfach mal die Multikernunterstützung in den Optionen ein und teste.
- Fenster verkleinern: ich habe einen Multicore-Rechner mit 1920x1200 Auflösung. Hier hilft nur Fenster verkleinern oder Desktopauflösung verringern. Den Rechner verwende ich derzeit nur zum Testen da er ein Stromfresser ist (bekam ich geschenkt ;) ).
Welche Berechnungen in der Grafikhardware und welche im Treiber stattfinden, hängt von der Grafikkarte ab. Ich habe, wie schon erwähnt, keine Highperformance-Karte, die sollten alle ohne Lüfter funktionieren und sind daher nach Geräuschentwicklung angeschafft worden. Display Lists und VBO scheinen in ATI-Karten gut zu funktionieren, ich nutze sie ebenfalls. Eine testweise verwendete nVidia-Karte älteren Datums hingegen führte zum PC-Absturz bei Verwendung dieser Optionen.

Kommentierenden Gruß

ThomasC
Nostromo
Posts: 99
Joined: 23 Sep 2011 18:28
Location: RLP

Re: OpenGL Einstellungen

Post by Nostromo »

Hallo Thomas,

danke für Deinen Beitrag. Ich habe mal versuchsweise meine Grafikkarte bzw. das Display auf 16 Bit Farbtiefe umgestellt und der Unterschied bei der Performance von HELI-X ist schon recht erheblich. Wenn es so bei 32 Bit Farbtiefe laufen würde, wäre ich voll und ganz zufrieden. Allerdings muß ich meine Aussage revidieren, dass man den Unterschied zwischen beiden Einstellungen nicht sehen würde. Insbesondere bei den feinen Helligkeitsschattierungen im Himmel entstehen bei 16 Bit Farbtiefe diese häßlichen Pixeltreppen, die man doch recht deutlich erkennen kann.

Allerdings glaube ich, habe ich nun irgendwas verändert, was nicht gut war. Da ich nun schon einiges herumprobiert hatte und mir manche Sachen seltsam vorkamen, habe ich HELI-X mal auf die "Factory Settings" zurückgestellt. Jetzt fehlen plötzlich Einstellmöglichkeiten im OpenGL Dialog. Das sieht nun aus wie in einer der uralten Versionen von HELI-X. Als ob ich damit die Version 4 auf die Version 3 zurückgesetzt habe. Da scheint noch irgendwie ein Bug drin zu sein.

Eventuell war ja eins der letzten Updates nicht richtig aufgesetzt worden. Könnte das sein? Vor allem, weil ich in meiner Konfiguration Einstellungen gefunden habe, die laut Michael in der Version 4.2 nicht vorhanden sein sollten.

Kann mir jemand bei diesem Problem helfen? :shock:

Außerdem habe ich noch festgestellt, dass eine Umstellung des Hintergrunds (also des Flugplatzes) von SkyBox auf SkyBox1024 bei mir keinen Unterschied in der Performance zeigt.

Gruß, Notker
Nostromo
Posts: 99
Joined: 23 Sep 2011 18:28
Location: RLP

Re: OpenGL Einstellungen

Post by Nostromo »

ThomasC wrote: - Update auf Heli-X 4.2 (Option für Multikernunterstützung) brachte eine deutliche Besserung, obwohl der Prozessor im Grunde nur Multithreading unterstützt, er hat nur einen Kern.
Dazu habe ich auch mal eine Frage. Bei mir läuft die ganze Sache nach wie vor nur auf einem Prozessorkern. Muß man das irgendwo konfigurieren?

Danke für die Info.

Gruß, Notker
ThomasC
Posts: 180
Joined: 29 Mar 2012 16:29
Location: Germany

Re: OpenGL Einstellungen

Post by ThomasC »

Nostromo wrote:
ThomasC wrote: - Update auf Heli-X 4.2 (Option für Multikernunterstützung) brachte eine deutliche Besserung, obwohl der Prozessor im Grunde nur Multithreading unterstützt, er hat nur einen Kern.
Dazu habe ich auch mal eine Frage. Bei mir läuft die ganze Sache nach wie vor nur auf einem Prozessorkern. Muß man das irgendwo konfigurieren?

Danke für die Info.

Gruß, Notker
Konfiguration -> Globale Optionen -> Multi-Core. Wenn das bei Dir fehlt (Grundbedingung scheint: Windows erkennt mindestens zwei Kerne, egal ob real oder hyperthreaded), entferne mal die <path>\files\Application\ApplicationSettings.xml (durch Umbenennen oder Löschen, wie es beliebt), wobei <path> der Pfad zu Deinem Heli-X-Ordner ist. Danach erstellt Heli-X diese Datei mit Standardwerten neu. Wie in der Heli-X-Anleitung beschrieben, schaltet in ebendieser Datei die Option <ShowAllOptions>true</ShowAllOptions> die von Dir vermutlich gesuchten Display Lists und VBOs wieder zur Einstellung frei. Du kannst die Datei aber auch direkt editieren. Funzt auch.

Viel Erfolg,

Gruß

ThomasC
Nostromo
Posts: 99
Joined: 23 Sep 2011 18:28
Location: RLP

Re: OpenGL Einstellungen

Post by Nostromo »

Hallo Thomas
ThomasC wrote: Konfiguration -> Globale Optionen -> Multi-Core. Wenn das bei Dir fehlt (Grundbedingung scheint: Windows erkennt mindestens zwei Kerne, egal ob real oder hyperthreaded), entferne mal die <path>\files\Application\ApplicationSettings.xml (durch Umbenennen oder Löschen, wie es beliebt), wobei <path> der Pfad zu Deinem Heli-X-Ordner ist. Danach erstellt Heli-X diese Datei mit Standardwerten neu. Wie in der Heli-X-Anleitung beschrieben, schaltet in ebendieser Datei die Option <ShowAllOptions>true</ShowAllOptions> die von Dir vermutlich gesuchten Display Lists und VBOs wieder zur Einstellung frei. Du kannst die Datei aber auch direkt editieren. Funzt auch.
Ich hab dieses ShowAllOptions mal mit einem XML-Editor auf true gesetzt und jetzt sehen die OpenGL Einstellungen wieder so aus, wie ich es gewohnt war. Allerdings sind nun auch wieder die Einstellungen für die Farbtiefe und die Bildwiederholfrequenz vorhanden, die laut Michael bei der Version 4.2 angeblich nicht mehr da sein sollten.

Irgendwie ist das alles sehr merkwürdig!

Ich hatte vorher bereits eine komplette Rücksetzung auf "Factory Settings" gemacht. Dabei werden sämtliche Konfigurationsdateien neu angelegt und mit den Standardvorgabewerten gefüllt. Ob bei meiner Installation mal irgendwas mit einem Update auf eine neuere Version fehlgeschlagen war und ich nun einen Versions-Mischmasch in meiner HELI-X Installation habe? Das wäre äußerst unschön. Mich ärgert es ja schon, dass ich meine ganzen Einstellungen und meine Statistiken verloren habe.

Die von Dir beschriebene Einstellmöglichkeit für ein Multiprozessorsystem kann ich trotz all der beschriebenen Aktionen nicht finden. Weder im Oberflächendialog, noch in einer der XML-Konfigurationsdateien.

Irgendwas ist bei meiner HELI-X Installation faul. Ich habe definitiv einen Doppelkernprozessor (Intel Core 2 vPro) und als Betriebssystem Windows 7 Professional.

Gruß,
Notker
ThomasC
Posts: 180
Joined: 29 Mar 2012 16:29
Location: Germany

Re: OpenGL Einstellungen

Post by ThomasC »

@Norbert: ist bei mir auch so. Mich stören diese Optionen aber nicht. ShowAllOptions bedeutet eben, daß alle Optionen gezeigt werden. Wer daran bastelt, sollte wissen, was er tut. Deswegen muß man auch Hand anlegen um diese Optionen freizuschalten.

Warum das bei Dir keine Multicoreoptionen anzeigt, weiß ich aber auch nicht. Ich hab von Java keinen Plan. Vielleicht kann Dir Michael dazu weiterhelfen, durchaus möglich, daß es ein Bug ist, der nur in sehr speziellen Umgebungen auftritt und daher beim Betatesten nicht gefunden wurde.

Gruß

ThomasC
User avatar
Michael
Posts: 1854
Joined: 25 May 2008 16:11
Location: Germany
Contact:

Re: OpenGL Einstellungen

Post by Michael »

Hallo,

Thomas, Du hast noch die Beta (kannst updaten). Die Multicore-Einstellungen habe ich wieder herausgenommen. Die Synchronisation hat eher Probleme als Vorteile gebracht (je nach Rechner).

Noch zum Rest:

Die Auflösung der Szenen bezieht sich auf das Bildformat. Das ist komplett unabhängig von der Bildschirmauflösung.

Zur Vollast: HELI-X ist so programmiert, das permanent versucht wird, die grösstmöchliche Framerate zu ermöglichen. Wenn man das nicht will, kann man die Framerate nach oben beschränken (max FPS bei den Performance-Einstellungen).

Gruss

Michael
Post Reply