Tekstura OpenGL ES 2.0 nie jest wyświetlana na niektórych urządzeniach

Znalazłem ramkę graficzną 3D dla Androida o nazwieRajawali i uczę się, jak go używać. Podążyłem za najbardziej podstawowym samouczkiem, który polega na renderowaniu obiektu shpere z obrazem jpg w rozmiarze 1024x512 dla tekstury. Działało dobrze na Galaxy Nexus, ale nie działało na Galaxy Player GB70.

Kiedy mówię, że nie działa, mam na myśli, że obiekt pojawia się, ale tekstura nie jest renderowana. Ostatecznie zmieniłem niektóre parametry, których używam dla frameworka Rajawali podczas tworzenia tekstur i uruchomiłem go. Oto co odkryłem.

Przyczyna pochodziła z miejsca, w którymGL_TEXTURE_MIN_FILTER był ustawiany. Wśród następujących czterech wartości

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

tekstura jest renderowana tylko wtedy, gdyGL_TEXTURE_MIN_FILTER nie jest ustawiony na filtr za pomocą mipmap. Więc kiedyGL_TEXTURE_MIN_FILTER jest ustawiony na dwa ostatnie działa.

Teraz jest to, czego nie rozumiem i jestem ciekawy. Kiedy zmniejszam obraz, którego używam jako tekstury, do rozmiaru 512x512GL_TEXTURE_MIN_FILTER ustawienia nie mają znaczenia. Działają wszystkie cztery ustawienia filtru min.

Tak więc moje pytanie brzmi: czy istnieje wymóg dotyczący wymiarów obrazu podczas używania filtru min dla tekstury? Czy jestem zobowiązany do użycia obrazu, który jest kwadratowy? Czy inne rzeczy, takie jak styl zawijania lub konfiguracja filtra mag może być problemem?

A może to wygląda na błąd implementacji OpenGL urządzenia?

questionAnswers(1)

yourAnswerToTheQuestion