OpenGL simulieren

02/12/2016 17:48 Lalaschlumpf#1
Hallo,
ich will ein OpenGL Fenster so Resourcen arm wie möglich laufen lassen, hab überlegt ob ich viellecht einfach OpenGL faken kann?
Also einfach ein Programm machen was OpenGL imitiert so das ich er dann meine exe executed.
02/12/2016 21:06 Shadow992#2
Die Frage danach ob es nicht ressourcensparender wäre OpenGL zu simulieren ist vergleichbar mit der Frage ob es nicht effizienter wäre dem Menschen nur noch simulierte Nahrung vorzusetzen.

Was ich damit aussagen will:
Möglich ist es, aber du wirst in 99% der Fälle nicht das bekommen was du willst oder zumindest in 99% der Fälle deutlich langsamer als OpenGL sein.

Auf gut deutsch:
Nö!
02/12/2016 23:05 warfley#3
OpenGL ist eine der größten Bibliotheken die ich kenne, und extrem gut Optimiert, ich denke besser wirst du es nicht hinbekommen, wenn du es überhaupt soweit packen solltest, etwas ähnliches auf die Beine zu stellen.

Aber da OpenGL komplett hardwarebeschleunigt ist sollte ein OpenGL Fenster deinen PC nicht wirklich ausbremsen, da nur die GPU belastet wird, welche extrem gut parallelisiert läuft. Problematisch wird es nur mit einem Gameloop mit vielen Berechnungen, da die auf die CPU schlagen, das hat wiederum nichts mehr mit OpenGL zu tun
02/13/2016 09:59 Lalaschlumpf#4
Ich glaube hier wurde etwas falsch verstanden: Das Spiel muss nur so TUN als würde es laufen
02/13/2016 11:54 th0rex#5
Quote:
Originally Posted by Lalaschlumpf View Post
Ich glaube hier wurde etwas falsch verstanden: Das Spiel muss nur so TUN als würde es laufen
Und wie tut ein Spiel so als ob es läuft ohne etwas im Hintegrund zu simulieren oder zu zeichnen ?
02/13/2016 15:24 warfley#6
Du könntest eine Programmbibliothek schreiben welche die selben Funktionen wie OpenGL bereitstellt, die allerdings nichts machen, und die dann in das Programmverzeichnis kopieren, beim Laden von OpenGL wird nach der Programmbibliothek zunächst im eigenen Verzeichnis gesucht, und danach erst im System Verzeichnis (da wo die echte Bibliothek liegt).

In die Bibliothek kannst du dann auch dein Programm einbetten
02/13/2016 15:41 Lalaschlumpf#7
Quote:
Originally Posted by C0untLizzi View Post
Und wie tut ein Spiel so als ob es läuft ohne etwas im Hintegrund zu simulieren oder zu zeichnen ?
Indem man z.B die Qualität EXTREM runterstellt, irgendwie ein Pixel pro 10cm oder so.
oder man löscht gleich einfach alle Texturen and täuscht sie mit schwarzen balken aus.
02/13/2016 17:08 Shadow992#8
Quote:
Originally Posted by Lalaschlumpf View Post
Indem man z.B die Qualität EXTREM runterstellt, irgendwie ein Pixel pro 10cm oder so.
oder man löscht gleich einfach alle Texturen and täuscht sie mit schwarzen balken aus.
Das Hauptproblem sind nicht dir Texturen, die sind ein Witz.
Eklig wird es bei Partikelsystemen, die können schon ganz schön Leistung fressen.
Auch Transparrnz u.ä. ist oft ein Problem.

Aber "einfach so" austauschen der Funktionen funktioniert nicht, weil der Shader-Code für OpenGL in einer Art minimalem C-Code zur Laufzeit kompiliert wird.

Das heißt, wenn du hier irgendwas simulieren willst musst du entweder auf der untersten Eben ansetzen (zwischen Treiber und Grafikkarte) oder aber deinen eigenen Kernel/Shader/etc. schreiben.

Noch dazz kommt, dass in OpenGL nicht selten auch noch ein paar rudimentäre Kollisionsabfragen ausgelagert auf die Grafikkarte werden (um den Prozessor weniger zu belasten). Vielleicht gibt es tatsächlich ein paar Tricks um OS-Global die Partikelsysteme, Texturen, usw. runterzuschrauben aber das ist dann entweder nur mit großen Eingriffen in die Treiber möglich (und vor allem persistent) oder aber die Auswirkungen sind so minimal, dass es sich nicht lohnt.

Alles in allem bleibt es also bei der Antwort:
Nö!

Mal ganz abgesehen davon, dass normalerweise nicht die Grafikkarte limitiert sondern der Prozessor-/die Bus- Geschwindigkeit.