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