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?
Antworten:
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.
quelle