Визуальные артефакты в текстуре OpenGL на устройстве (iPad) - но НЕ на симуляторе - PullRequest
2 голосов
/ 04 февраля 2011

Я использую текстуру OpenGL на iPad и получаю ужасные артефакты на устройстве , в то время как Симулятор показывает все идеально и гладко . Я считаю, что iPhone будет показывать те же артефакты.

Если я смотрю на заголовки, я вижу, что однажды я включаю OpenGLES / ES2 / gl.h, а в другой файл OpenGLES / ES1 / *. H. Может ли это быть проблемой?

Или что может быть причиной появления артефактов на устройстве?

Simulator:

screenshot from simulator

Реальное устройство:

screenshot from real device

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Это может быть оптимизация PNG, которую XCode применяет во время компиляции (попробуйте отключить ее); см. Как я могу пропустить сжатие одного PNG?

Хотя вы можете полностью отключить оптимизацию / сжатие PNG с помощью «Сжать файлы PNG» в настройках проекта (это видно только в том случае, если для базового SDK проекта задан SDK для устройства, а не SDK для симулятора), но вам не нужно сделать это! Прочитайте ссылку выше, чтобы узнать, почему, но суть в том, что оптимизация позволяет iPhone пропустить некоторые математические операции, замедляющие отображение PNG.

Xcode только оптимизирует изображение PNG файлы, о которых он знает. Предотвращать конкретный PNG от оптимизации, вы измените его тип файла, так что Xcode нет больше не знает, что это PNG.

  1. Выберите файл в окне проекта.
  2. Выберите Файл-> Получить информацию.
  3. На вкладке Общие измените Тип файла с image.png на файл.
1 голос
/ 06 февраля 2011

Если вы используете ES 2.0, то первое предположение состоит в том, что у вас есть проблема точности. Спецификаторы точности GLSL highp, mediump и lowp являются подсказками, а не абсолютными командами, так как они определяют минимально необходимую точность. Вполне возможно, что симулятор дает вам больше точности, чем вы явно просили, но это не так.

Если вы не были в этом научны, то попробуйте увеличить все до максимума в качестве теста, затем медленно наберите номер вниз и проверьте результаты эмпирически.

...