Was führt dazu, dass einige Computer kein oder langsames OpenGL haben und wie kann dies behoben werden?


7

Ich verwende Java mit JOGL, um OpenGL-erweiterte 2D-Grafiken zu erstellen. Die Grafikoperationen, die ich verwende, sind nichts Besonderes und sollten von fast jeder neueren Grafikkarte unterstützt werden. Zum Beispiel läuft mein Spiel auf einem Netbook großartig.

Ich hatte gehofft, dass das Spiel auf den meisten Computern laufen würde. Es läuft gut auf meinen eigenen Computern. Ich fand jedoch, dass einige Computer eine sehr langsame Leistung haben (anscheinend Software-Fallback, was ungefähr 2 Bilder pro Sekunde ergibt). Ich habe eine LWJGL-App auf einem solchen Computer ausgeführt. Es läuft überhaupt nicht (es meldet so etwas wie org.lwjgl.LWJGLException: Pixelformat nicht beschleunigt, Sie können verschiedene Forenthreads finden, die sich darüber beschweren, aber keine offensichtlichen Lösungen, außer dem Vorschlag, dass es sich um ein Treiberproblem handelt). Andere OpenGL-Software scheint ebenfalls nicht zu funktionieren. Ich fand auch heraus, dass meine Flash-Version des Spiels mit genau den gleichen grafischen Effekten auf demselben Computer im Vollbildmodus ziemlich gut funktioniert. Der betreffende Computer verfügt über eine aktuelle ATI-Karte, aber leider habe ich keinen Zugriff auf den Treibermanager.

Das Problem scheint ziemlich weit verbreitet zu sein. Ich finde es sehr bedauerlich, dass OpenGL nicht immer Zugriff auf Grafikfunktionen bietet, die auf den meisten Computern zu finden sind. Dies macht es weniger attraktiv für gelegentliche 2D-Spiele, die ich auf jedem Computer ausführen möchte.

Ist einer von Ihnen auf dieses Problem gestoßen und hat es geschafft, es zu beheben? AFAIK, sowohl NVidia als auch ATI bieten OpenGL als Teil ihrer Standardtreibersätze an, aber vielleicht gibt es einige Ausnahmen? Wird dieses Problem durch Treiber von Drittanbietern verursacht, die OpenGL nicht unterstützen, und kann das Problem durch die Installation besserer Treiber behoben werden? Wie viele andere Grafikkarten gibt es ohne OpenGL-Treiber?

EDIT : Abschließend kann ich feststellen, dass OpenGL auf Windows-Computern einfach nicht gut unterstützt wird. Microsoft scheint sein Bestes getan zu haben, um es von seiner Plattform fernzuhalten, indem beispielsweise OpenGL-Treiber in einigen Windows-Treiberpaketen absichtlich weggelassen wurden. Holen Sie sich die Herstellertreiber und Sie erhalten OpenGL; Holen Sie sich die Standardtreiber, die Windows für Sie herunterlädt, und das tun Sie nicht. Dies hat auch anderen unendlich viel Ärger bereitet. Zum Implementieren von WebGL verwenden Webbrowser beispielsweise Angle , einen OpenGL ES-Emulator für DirectX. Was wir also wirklich brauchen würden, ist so etwas wie Angle, nur für Full OpenGL.


Die Handlung wird dicker ... es scheint, dass auf dem "langsamen" Computer, auf dem ich getestet habe, tatsächlich ATI 3D-Treiber installiert sind ... Ich werde dies weiter untersuchen, ich werde Sie auf dem Laufenden halten.
Boris van Schooten

Beachten Sie, dass Intel mehr Grafikhardware verkauft als ATI und nVidia zusammen. Mit großem Abstand. Sie müssten sicherstellen, dass die Dinge auch mit einfachen, integrierten Grafiken funktionieren.
Billy ONeal

Nun, das Spiel funktioniert gut auf einem Netbook mit einem Intel Graphics Media Accelerator 950, der eine der langsamsten GPUs sein muss.
Boris van Schooten

@Borris: Die GMA 650 ist tatsächlich eine der schnelleren GPUs, die Intel herstellt - nach meinem Verständnis kann sie Aero ausführen. Vieles von dem, was sie verkaufen, kann das nicht (und bietet keine wirklich hardwarebeschleunigte Grafik)
Billy ONeal

@billy danke für die Info. Werden Computer immer noch ohne 3D-Funktionen verkauft? Ich meine, ein 250-Dollar-Netbook hat die 650, und ich habe ältere Laptops gesehen, die auch 3D-Grafiken verwalten können.
Boris van Schooten

Antworten:


5

Dies ist ein häufiges Problem, selbst bei neuen GPUs, wenn keine Treiber installiert sind. Die OpenGL-Version ist 1.0 1.1 und wird im Softwaremodus ausgeführt.

Installieren / aktualisieren Sie GPU-Treiber und fügen Sie Ihrer Anwendung eine Versionsabfrage hinzu. Wenn die zurückgegebene OpenGL-Version unter 1.1 liegt, fehlen definitiv Treiber.


2
Das hat das Problem auf diesem Computer behoben. Ich interessiere mich immer noch für die Erfahrungen anderer Leute. Ich habe den OpenGL-Erweiterungs-Viewer verwendet , um den OpenGL-Treiber zu überprüfen. Es wurde GDI generisches OpenGL 1.1 (= Software-Rendering) gemeldet. Es funktionierte nach der Neuinstallation der Treiber. AFAIK Die Originaltreiber wurden mithilfe des Standardinstallationsprozesses installiert (bei dem auch GPU-spezifische Treiber gefunden werden), anstatt sie direkt von der Website des Anbieters herunterzuladen. Die gemeldete OpenGL-Version ist jetzt 3.3. Meine JOGL-App funktioniert jetzt reibungslos, ebenso wie LWJGL-Apps.
Boris van Schooten

1

Ich rate hier nur, aber verwenden Sie Shader? Welche Grafikkarte in dem Computer, auf dem Sie getestet haben, hat die Ausnahme ausgelöst? Viele ältere integrierte Intel-Karten unterstützen den Pixel-Shader nicht.

Wenn dies der Fall ist, können Sie nur einen Fallback mit fester Funktion bereitstellen.


Was ist ein Fallback mit fester Funktion?
Xavier

1
Ein Fallback mit festen Funktionen ist ein Rendering-Pfad (denken Sie an ein anderes Rendering-System), der beim Rendern keine Shader verwendet und stattdessen die Pipeline mit festen Funktionen verwendet, um ähnliche Effekte zu erzielen (verwendet beispielsweise nur OpenGL-Aufrufe bis Version 1.5 oder ähnliches). .
ChrisE

Ich benutze keine Shader, nur Textur-Mapping und Alpha-Blending, alles OpenGL 1.x-Zeug.
Boris van Schooten
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.