Я пытаюсь выполнить некоторые оптимизации производительности OpenGL ES, пытаясь увеличить количество треугольников в секунду, которые я могу отобразить в своем приложении для iPhone, но я ударил по кирпичной стене. Я попытался преобразовать свои типы данных OpenGL ES с фиксированной точки в плавающую точку (за рекомендация Apple), перемежая объекты вершинного буфера и минимизируя изменения в, но ни одно из этих изменений не повлияло на скорость рендеринга. Независимо от того, что я, похоже, не могу подтолкнуть свое приложение выше 320 000 треугольников на iPhone 3G, работающий под ОС 3.0. Согласно этот тест, я должен ударить 687 000 треугольников/с на этом оборудовании с гладким оттенком, который я использую.
В моем тестировании, когда я запускаю инструмент производительности OpenGL ES в Инструментах против работающего устройства, я вижу, что статистика "Использование Tiler" достигает почти 100% при рендеринге моего теста, но "Использование Renderer" только получает до около 30%. Это может быть ключом к тому, что узкое место в процессе отображения, но я не знаю, что означают эти значения, и я не нашел на них никакой документации. У кого-то есть хорошее описание того, что эта и другая статистика в iPhone OpenGL ES стоят? Я знаю, что PowerVR MBX Lite в iPhone 3G является отложенным рендерером на основе плитки, но я не уверен, какая разница между ними Renderer и Tiler в этой архитектуре.
Если это помогает в любом случае, исходный код (BSD-лицензия) для этого приложения доступен, если вы хотите загрузить и протестировать его сам. В текущей конфигурации он запускает небольшой тест каждый раз, когда вы загружаете новую молекулярную структуру и выводите треугольники/на консоль.