OpenGL ES 2.0-Textur wird auf einigen Geräten nicht angezeigt

Ich habe ein 3D-Grafik-Framework für Android namens gefundenRajawali und ich lerne, wie man es benutzt. Ich habe das einfachste Tutorial befolgt, das darin besteht, ein shpere-Objekt mit einem JPG-Bild in der Größe 1024 x 512 für die Textur zu rendern. Auf dem Galaxy Nexus hat es problemlos funktioniert, auf dem Galaxy Player GB70 jedoch nicht.

Wenn ich sage, dass es nicht funktioniert hat, bedeutet dies, dass das Objekt angezeigt wird, die Textur jedoch nicht gerendert wird. Schließlich änderte ich einige Parameter, die ich für das Rajawali-Framework beim Erstellen von Texturen verwendete, und brachte es zum Laufen. Folgendes habe ich herausgefunden.

Die Ursache kam von wo dieGL_TEXTURE_MIN_FILTER wurde eingestellt. Unter den folgenden vier Werten

GLES20.GL_LINEAR_MIPMAP_LINEAR
GLES20.GL_NEAREST_MIPMAP_NEAREST
GLES20.GL_LINEAR
GLES20.GL_NEAREST

Die Textur wird nur dann gerendert, wennGL_TEXTURE_MIN_FILTER wird nicht mit mipmap auf einen Filter gesetzt. Also wannGL_TEXTURE_MIN_FILTER ist auf die letzten beiden eingestellt, es funktioniert.

Nun hier ist das, was ich nicht verstehe und worauf ich neugierig bin. Wenn ich das Bild, das ich als Textur verwende, auf die Größe 512x512 verkleinere, wird dasGL_TEXTURE_MIN_FILTER Einstellungen spielt keine Rolle. Alle vier Einstellungen des Min-Filters funktionieren.

Meine Frage ist also, gibt es eine Anforderung für die Abmessungen des Bildes, wenn der Min-Filter für die Textur verwendet wird? Wie soll ich ein quadratisches Bild verwenden? Können andere Dinge wie der Wrap-Stil oder die Konfiguration des Mag-Filters ein Problem sein?

Oder scheint es ein OpenGL-Implementierungsfehler des Geräts zu sein?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage