Совет относительно ускорения OpenGL ES 1.1 на iPhone

Если Ваше приложение делает интенсивное использование объектов Даты и Календаря, действительно необходимо использовать Время Joda, потому что java.util.Date изменяемо. java.util.Calendar имеет проблемы производительности, когда ее поля обновляются и неуклюжие для арифметики даты и времени.

9
задан Rob Jones 10 December 2009 в 03:48
поделиться

6 ответов

Если коэффициент использования плитки все еще превышает 90%, вы, вероятно, по-прежнему ограничены пропускной способностью вершин. Использование вашего средства визуализации выше, поскольку графический процессор обрабатывает больше кадров. Если ваша основная цель - повышение производительности на старых устройствах, то ключевым моментом остается сокращение объема данных вершин, необходимых для каждого треугольника. У этого есть две стороны:

Уменьшение количества данных на вершину : Теперь, когда все ваши атрибуты вершин уже имеют GL_SHORT s, следующее, что нужно сделать, это найти способ сделать что вы хотите, используя меньше атрибутов или компонентов. Например, если вы можете жить без зеркальных бликов, использование освещения DOT3 вместо освещения с фиксированной функцией OpenGL ES заменит ваши 3 шорта (+ 1 за исключением отступов) для нормалей на 2 шорта для дополнительной координаты текстуры. В качестве дополнительного бонуса вы сможете освещать свои модели на пиксель.

Уменьшение количества вершин, необходимых для каждого треугольника : При рисовании с индексированными треугольниками вы должны убедиться, что ваши индексы отсортированы для максимального повторного использования. Возможно, вам лучше всего будет использовать инструмент PVRTTriStrip компании Imagination Technologies.

7
ответ дан 4 December 2019 в 12:19
поделиться

Если у вас всего 58 различных текстур 64x64, атлас текстур кажется хорошей идеей, поскольку все они уместятся в одной текстуре 512x512 ... если вы не полагаетесь на текстуру режимы обертывания, я бы, по крайней мере, попробовал это.

В каком формате у вас текстуры? Вы можете попробовать использовать сжатую текстуру PVRTC; Я думаю, что это меньшая нагрузка на Tiler, и я был приятно удивлен качеством изображения даже для текстур с разрешением 2 бита на пиксель. (Подходит для естественных изображений, не годится, если вы делаете что-то, похожее на 8-битную видеоигру)

4
ответ дан 4 December 2019 в 12:19
поделиться

] Первое, что я сделал бы, это запустил профилирование инструментов на медленном аппаратном устройстве. Он должен довольно быстро показать вам, где находятся узкие места в вашем конкретном случае.

Обновление после результатов инструментов:

Этот вопрос дает аналогичный результат в Инструментах для вас, возможно, совет также применим в вашем случае ( в основном сокращая количество данных вершин)

2
ответ дан 4 December 2019 в 12:19
поделиться

Вы просматривали "Руководство по программированию OpenGL ES для iPhone OS »в центре разработки? Есть разделы о передовых методах работы с данными вершин и текстур.

Отформатированы ли ваши данные для использования треугольных полос?

С точки зрения минимальных усилий, последовательность изменения для вас, вероятно, будет такой:

  • Сокращение размер атрибута вершины
  • VBOs

Обратите внимание, что когда вы делаете это, вам нужно убедиться, что компоненты выровнены по их собственному выравниванию, то есть плавающие или полные целые числа находятся на 4-байтовых границах, короткие - на 2- байтовые границы. Если вы этого не сделаете, ваша производительность упадет. Может быть полезно мысленно отобразить его, указав порядок атрибутов в качестве определения структуры, чтобы вы могли проверить свой макет и выравнивание.

  • убедитесь, что ваши данные разделены для общих вершин
  • , используя атлас текстуры для уменьшения текстуры swaps
1
ответ дан 4 December 2019 в 12:19
поделиться

Чтобы попробовать преобразовать текстуры в 16-битный формат RGB565, просмотрите этот код в почтенном Apple Texture2D.m, найдите kTexture2DPixelFormat_RGB565

http://code.google.com/p/ cocos2d-iphone / source / browse / branch / branch-0.1 / OpenGLSupport / Texture2D.m

(этот код загружает PNG и преобразует их в RGB565 во время создания текстуры; я не знаю, существует ли формат файла RGB565 как таковой )

Для получения дополнительной информации о текстурах, сжатых PVRTC (которые выглядели намного лучше, чем я ожидал, когда я их использовал, даже при 2 битах на пиксель), см. Образец PVRTextureLoader от Apple:

http://developer.apple.com/iPhone /library/samplecode/PVRTextureLoader/index.html

содержит как код для загрузки текстур PVRTC в ваше приложение, так и инструкции по использованию инструмента текстуры для преобразования ваших файлов .png в файлы .pvr.

1
ответ дан 4 December 2019 в 12:19
поделиться

Самый большой выигрыш в графическом программировании сводится к следующему:

Пакетный, Пакетный, Пакетный

Сглаживание текстуры будет иметь большее значение, чем все остальное, что вы можете сделать. Переключение текстур похоже на остановку ускоряющегося поезда, чтобы каждый раз впускать новых пассажиров.

Объедините все эти текстуры в атлас и значительно сократите количество вызовов отрисовки.

Этот веб-инструмент может быть полезен: http://zwoptex.zwopple.com/[1216pting

2
ответ дан 4 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: