Erhalte die maximale Größe der OpenGL ES 2.0 Textur in Android

8

Ich versuche, die maximale Texturgröße in Android für OpenGL 2.0 zu erhalten. Aber ich habe festgestellt, dass die nächste Anweisung nur funktioniert, wenn ich mich gerade im OpenGL-Kontext befinde, also muss ich eine GL-Oberfläche und einen GL-Renderer haben, die ich nicht haben will.

%Vor%

Also kam ich mit dem nächsten Algorithmus, der mir die maximale Texturgröße gibt, ohne eine Oberfläche oder einen Renderer erstellen zu müssen. Es funktioniert richtig, also meine Frage ist, ob dies mit allen Android-Geräten funktioniert, und ob jemand einen Fehler erkennen kann, nur für den Fall.

%Vor%     
PerracoLabs 13.06.2012, 19:36
quelle

1 Antwort

6

PBUFFER max size ist leider nicht mit der maximalen Texturgröße verbunden (kann aber gleich sein).

Ich glaube, der beste Weg, um die maximale Texturgröße zu erhalten, besteht darin, einen GL-Kontext (im selben Kontext wie der, in dem Sie diese Texturen tatsächlich verwenden) zu erstellen und nach GL_MAX_TEXTURE_SIZE zu fragen.

Es gibt einen starken Grund dafür: Der ogl-Treiber wird für den aktuellen Prozess vor der Oberflächen- (und Kontext-) Erstellung nicht initialisiert. Einige Treiber führen die zugrunde liegende HW / SKU-Erkennung bei der Initialisierung durch und berechnen abhängig von den HW-Fähigkeiten die maximalen Oberflächengrößen.

Außerdem darf die maximale Texturgröße kontextabhängig variieren (und der EGLConfig-Kontext wurde erstellt).

Und noch eine Sache: eglGetConfigs werden Sie alle EGLconfigs bekommen, auch diese vom Standard, Software android Renderer, oder diese vom OpenGL ES 1.1CM HW Treiber (wenn es separate Treiber für 1.1 und 2.0 auf der Zielplattform gibt). Treiber sind im Grafikstack irgendwie unabhängig und können verschiedene Max-Werte zurückgeben.

    
sacygan 28.06.2012, 18:02
quelle

Tags und Links