2011-05-26 2 views
1

Может ли кто-нибудь сказать мне, существует ли ограничение на максимальное количество вызовов OpenGL ES, которые могут быть сделаны на iPad (например, OpenGL рисовать вызовы и изменения состояния)?Есть ли максимальное количество вызовов OpenGL ES, которые вы можете сделать на iPad?

Я работаю над игрой и вижу низкий FPS, поэтому я задаюсь вопросом, имеет ли она что-нибудь с моим большим количеством вызовов OpenGL.

ответ

1

Не существует реального максимума для команд OpenGL ES, но каждый из них имеет некоторые связанные с этим накладные расходы. Избыточные изменения состояния должны быть устранены, а дорогостоящие изменения состояния должны быть уменьшены путем группировки геометрии способами, в которых выполняется все, используя одно состояние, а затем следующее. У Apple есть некоторые рекомендации для этого в их OpenGL ES Programming Guide for iOS.

Однако, я редко обнаружил, что команды OpenGL ES являются причиной значительного ухудшения производительности в моих приложениях. Большие проблемы, как правило, связаны с размером вашей геометрии или сложностью любых шейдеров или других эффектов, которые вы применяете к своей сцене. Я разделяю некоторые советы, которые я применил для уменьшения размера геометрии here, и один инструмент для профилирования шейдеров here, но я все еще learning the ins-and-outs of shader tuning.

Если вы действительно заботитесь о тонкой настройке вызовов OpenGL, лучший инструмент для профилирования - это новый анализатор OpenGL ES Analyzer, который поставляется с Xcode 4. Я показываю несколько примеров экранов этого инструмента в моем ответе here, где я использовал его для определения некоторых избыточных настроек. Он найдет эти вызовы для вас и укажет, где они находятся в вашем коде. Вы также можете использовать Time Profiler, чтобы узнать, загружаете ли вы больше нагрузки на процессор, чем должны быть при рендеринге ваших фреймов, и отслеживать нарушающие строки кода.

+0

Я сделал попробовал использовать инструмент анализатора, но когда когда-либо я делаю это, инструмент сбрасывается – kd3D

+0

Профайлер времени помог мне теперь иметь fps около 24, но я бы не хотел его больше увеличивать – kd3D

+0

@ kd3D - У меня никогда не было этого инструментального сбоя на мне раньше. Используете ли вы последнюю стабильную версию Xcode 4 при запуске iOS 4.0+ на целевом устройстве? iOS 4.0 необходим для запуска этого инструмента. –

1

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

+0

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

+0

Вы можете загружать объекты в другой поток. Вы можете ссылаться на сообщения, присутствующие в этой теме: http://stackoverflow.com/questions/1253145/how-to-use-opengl-es-on-a-separate-thread-on-iphone –

1

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

Шаблон трассировки OpenGL ES Анализ - это оружие по выбору. В прошлый раз, когда я использовал его, вам пришлось вручную привязать его к запущенному процессу на устройстве (все остальные параметры запуска не удались).

+0

можете ли вы пролить некоторые свет, на котором инструмент для использования и как определить местонахождение узкого места – kd3D

+0

@ kd3D см. мой отредактированный ответ – Till

+0

, он показывает, что этот инструмент не позволяет подключаться к любому процессу, и каждый раз, когда я запускаю его непосредственно с помощью инструмента, он сбрасывает инструмент – kd3D

Смежные вопросы