OpenGL ES 2.0 имеет серьезные проблемы с точностью выборки текстур -. Я видел темы с похожей проблемой , но я еще не видел реального решения этой проблемы "искаженной текстуры OpenGL ES 2.0" .
Это не связано с форматом изображения текстуры или цветовыми буферами OpenGL, похоже, это ошибка точности. Я не знаю, что конкретно приводит к сбою точности -. Похоже, это искажение вызвано не только размером геометрии, потому что простое масштабирование положения вершины, переданное вершинному шейдеру, не решает проблему.
Вот несколько примеров искажения текстуры:
Искаженная текстура (в OpenGL ES 2.0):http://i47.tinypic.com/3322h6d.png
Как обычно выглядит текстура (также в OpenGL ES 2.0):http://i49.tinypic.com/b4jc6c.png
Проблема текстуры ограничена мелкомасштабной геометрией в OpenGL ES 2.0, в противном случае выборка текстуры выглядит нормально, но эффект зернистости постепенно ухудшается по мере удаления данных вершин от начала координат XYZ (0,0,0)
Эти проблемы с текстурами не возникают на рабочем столе OpenGL (отлично работает в Windows XP, Windows 7 и Mac OS X)
Я видел, что проблема возникает только на Android, iPhone,или WebGL (, который похож на OpenGL ES 2.0)
Все текстуры имеют степень 2 , но проблема остается
. Масштабирование данных вершин-Значения положения X Y Z вершины находятся в диапазоне: -от 65536 до +65536 с плавающей запятой
. Масштабирование вида модели или масштабирование матрицы проекции не помогает
Изменение параметров фильтрации текстур не помогает
Разделение координат текстуры, переданных в вершинный шейдер , а затем их обратное умножение на правильные значения во фрагментном шейдере, также не работает
. точность highp sampler2D, highp float, highp int-во фрагменте или вершинном шейдере ничего не изменилось (lowp/medium тоже не работало)
Я думаю, что эта проблема должна быть решена в какой-то момент -Увидев, что игры на основе OpenGL ES 2.0 -способны отображать крупномасштабную -высоко детализированную геометрию