Существует ли максимальное количество вызовов OpenGL ES, которые вы можете совершать на iPad? - PullRequest
1 голос
/ 26 мая 2011

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

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

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

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

Однако я редко обнаруживал, что команды OpenGL ES являются причиной значительного снижения производительности в моих приложениях. Большие проблемы, как правило, связаны с размером вашей геометрии или со сложностью любых шейдеров или других эффектов, которые вы применяете к вашей сцене. Я поделюсь некоторыми советами, которые я применил для уменьшения размера геометрии здесь , и одним инструментом для профилирования шейдеров здесь , но я все еще изучаю информацию о входах и выходах настройки шейдера себя.

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

1 голос
/ 26 мая 2011

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

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

1 голос
/ 26 мая 2011

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

...