Текстура OpenGL ES 2.0 не отображается на некоторых устройствах
Я нашел 3D графический фреймворк для Android под названиемRajawali и я учусь его использовать. Я следовал основному уроку - рендерингу объекта shpere с изображением jpg размером 1024x512 для текстуры. Он хорошо работал на Galaxy Nexus, но не работал на Galaxy Player GB70.
Когда я говорю, что это не работает, я имею в виду, что объект появляется, но текстура не отображается. В конце концов я изменил некоторые параметры, которые я использую для фреймворка Rajawali при создании текстур, и заставил его работать. Вот что я узнал.
Причина исходила от того, гдеGL_TEXTURE_MIN_FILTER
был установлен. Среди следующих четырех значений
GLES20.GL_LINEAR_MIPMAP_LINEAR
GLES20.GL_NEAREST_MIPMAP_NEAREST
GLES20.GL_LINEAR
GLES20.GL_NEAREST
текстура отображается только тогда, когдаGL_TEXTURE_MIN_FILTER
не установлен фильтр с использованием mipmap. Так когдаGL_TEXTURE_MIN_FILTER
настроен на последние два, это работает.
Теперь вот то, что я не понимаю и мне интересно. Когда я уменьшаю изображение, которое я использую в качестве текстуры, до размера 512x512,GL_TEXTURE_MIN_FILTER
Настройки не имеют значения. Все четыре настройки фильтра min работают.
Поэтому мой вопрос: есть ли требования к размерам изображения при использовании минимального фильтра для текстуры? Например, я должен использовать квадратное изображение? Могут ли быть проблемы другие вещи, такие как стиль обертки или конфигурация магнитного фильтра?
Или это похоже на ошибку реализации OpenGL устройства?