Verwenden von Erweiterungen in Android OpenGL ES 2.0

7

Es ist kein Geheimnis, dass laut offizieller Dokumentation Erweiterungen unter OpenGL ES 2.0 nicht verfügbar sind. Dennoch ist die glext.h Datei in den NDK Plattform-Einfügeverzeichnisse macht ich denke , dass Erweiterungen in der Tat zur Verfügung stehen. Ich weiß, dass sich die Arbeit mit OpenGL unter NDK nicht von der Arbeit mit eigenständigem OpenGL unterscheidet. Wenn ich also so etwas wie eine JNI-Brücke zwischen meiner Java-Engine-Schnittstelle und diesen Erweiterungen mache, könnte ich sie verwenden.

Die Frage ist also: Welche Architekturlösung sollte ich verwenden, wenn ich verfügbare OpenGL ES-Erweiterungen auf ES2.0-Geräten verwenden möchte?

Netherwire
quelle
Ich stelle nur fest, dass ich definitiv Erweiterungen über GLES 2.0 unter Android (und im nativen Code) verwendet habe, sodass Sie in diesem Teil Ihrer Lösung keine Probleme haben sollten.
Robert Cannell
Betrachten wir sehr spezifische Programmierfragen wie diese? Dies ist eine sehr API-spezifische Programmierfrage und beinhaltet nicht einmal irgendetwas im Zusammenhang mit Rendering-Techniken oder der Verwendung einer API, um diese zu implementieren.
Yuriks
@yuriks Ja, ich denke wir sollten definitiv außer wenn es sich um sehr spezifische Programmierfragen im Zusammenhang mit Computergrafiken handelt. Tatsächlich denke ich, dass uns bestimmte Programmierfragen bisher am meisten fehlen (wahrscheinlich, weil diese schwieriger zu finden sind, wenn Sie ihnen nicht sofort begegnen).
Martin Ender

Antworten:

5

Ich bin auf Geräte gestoßen, die bestimmte Erweiterungen über glGetString (GL_EXTENSIONS) bewerben und die Einstiegspunkte nicht verfügbar machen. Ich bin auch auf das Gegenteil gestoßen, die Erweiterung war nicht in den Erweiterungszeichenfolgen, aber die Einstiegspunkte waren da und es hat funktioniert. Dies hängt davon ab, ob der Anbieter Funktionen im Treiber des GPU-Anbieters deaktiviert hat.

Sie müssen beide Erweiterungszeichenfolgen überprüfen und über eglGetProcAddress prüfen, ob der Einstiegspunkt nicht NULL ist .

Abgesehen davon sollte jede Erweiterung mit der Khronos-Registrierung von Erweiterungen übereinstimmen, sodass Sie gl2ext.h direkt von dort einschließen können, wenn Sie möchten.

ashleysmithgpu
quelle