Если Ваше приложение делает интенсивное использование объектов Даты и Календаря, действительно необходимо использовать Время Joda, потому что java.util.Date
изменяемо. java.util.Calendar
имеет проблемы производительности, когда ее поля обновляются и неуклюжие для арифметики даты и времени.
Если коэффициент использования плитки все еще превышает 90%, вы, вероятно, по-прежнему ограничены пропускной способностью вершин. Использование вашего средства визуализации выше, поскольку графический процессор обрабатывает больше кадров. Если ваша основная цель - повышение производительности на старых устройствах, то ключевым моментом остается сокращение объема данных вершин, необходимых для каждого треугольника. У этого есть две стороны:
Уменьшение количества данных на вершину : Теперь, когда все ваши атрибуты вершин уже имеют GL_SHORT
s, следующее, что нужно сделать, это найти способ сделать что вы хотите, используя меньше атрибутов или компонентов. Например, если вы можете жить без зеркальных бликов, использование освещения DOT3 вместо освещения с фиксированной функцией OpenGL ES заменит ваши 3 шорта (+ 1 за исключением отступов) для нормалей на 2 шорта для дополнительной координаты текстуры. В качестве дополнительного бонуса вы сможете освещать свои модели на пиксель.
Уменьшение количества вершин, необходимых для каждого треугольника : При рисовании с индексированными треугольниками вы должны убедиться, что ваши индексы отсортированы для максимального повторного использования. Возможно, вам лучше всего будет использовать инструмент PVRTTriStrip компании Imagination Technologies.
Если у вас всего 58 различных текстур 64x64, атлас текстур кажется хорошей идеей, поскольку все они уместятся в одной текстуре 512x512 ... если вы не полагаетесь на текстуру режимы обертывания, я бы, по крайней мере, попробовал это.
В каком формате у вас текстуры? Вы можете попробовать использовать сжатую текстуру PVRTC; Я думаю, что это меньшая нагрузка на Tiler, и я был приятно удивлен качеством изображения даже для текстур с разрешением 2 бита на пиксель. (Подходит для естественных изображений, не годится, если вы делаете что-то, похожее на 8-битную видеоигру)
] Первое, что я сделал бы, это запустил профилирование инструментов на медленном аппаратном устройстве. Он должен довольно быстро показать вам, где находятся узкие места в вашем конкретном случае.
Обновление после результатов инструментов:
Этот вопрос дает аналогичный результат в Инструментах для вас, возможно, совет также применим в вашем случае ( в основном сокращая количество данных вершин)
Вы просматривали "Руководство по программированию OpenGL ES для iPhone OS »в центре разработки? Есть разделы о передовых методах работы с данными вершин и текстур.
Отформатированы ли ваши данные для использования треугольных полос?
С точки зрения минимальных усилий, последовательность изменения для вас, вероятно, будет такой:
Обратите внимание, что когда вы делаете это, вам нужно убедиться, что компоненты выровнены по их собственному выравниванию, то есть плавающие или полные целые числа находятся на 4-байтовых границах, короткие - на 2- байтовые границы. Если вы этого не сделаете, ваша производительность упадет. Может быть полезно мысленно отобразить его, указав порядок атрибутов в качестве определения структуры, чтобы вы могли проверить свой макет и выравнивание.
Чтобы попробовать преобразовать текстуры в 16-битный формат RGB565, просмотрите этот код в почтенном Apple Texture2D.m, найдите kTexture2DPixelFormat_RGB565
(этот код загружает PNG и преобразует их в RGB565 во время создания текстуры; я не знаю, существует ли формат файла RGB565 как таковой )
Для получения дополнительной информации о текстурах, сжатых PVRTC (которые выглядели намного лучше, чем я ожидал, когда я их использовал, даже при 2 битах на пиксель), см. Образец PVRTextureLoader от Apple:
http://developer.apple.com/iPhone /library/samplecode/PVRTextureLoader/index.html
содержит как код для загрузки текстур PVRTC в ваше приложение, так и инструкции по использованию инструмента текстуры для преобразования ваших файлов .png в файлы .pvr.
Самый большой выигрыш в графическом программировании сводится к следующему:
Пакетный, Пакетный, Пакетный
Сглаживание текстуры будет иметь большее значение, чем все остальное, что вы можете сделать. Переключение текстур похоже на остановку ускоряющегося поезда, чтобы каждый раз впускать новых пассажиров.
Объедините все эти текстуры в атлас и значительно сократите количество вызовов отрисовки.
Этот веб-инструмент может быть полезен: http://zwoptex.zwopple.com/[1216pting