Во-первых, как Я сказал в ответ на вопрос, который вы связали выше , LLVM в целом обеспечивает лучшую производительность для скомпилированного кода при ориентации на iOS.Apple даже удаляет GCC как компилятор из XCode, поэтому у вас не будет выбора.Используйте LLVM.
Во-вторых, утверждения, сделанные в этой статье о математике с фиксированной запятой, не применяются к реализации OpenGL ES на устройствах iOS.Графические процессоры PowerVR, используемые в этих устройствах, настроены на использование входов с плавающей запятой и могут на самом деле снижать производительность при работе с данными с фиксированной запятой.Из Apple OpenGL ES Руководство по программированию :
Избегайте использования типа данных OpenGL ES GL_FIXED.Он требует того же объема памяти, что и GL_FLOAT, но обеспечивает меньший диапазон значений.Все устройства iOS поддерживают аппаратные единицы с плавающей точкой, поэтому значения с плавающей точкой могут обрабатываться быстрее.
и
Процессор ARM в устройствах iOS обрабатывает инструкции с плавающей точкойизначально.Ваше приложение должно использовать математику с плавающей запятой вместо математики с фиксированной запятой, когда это возможно.Если вы портируете приложение, которое использует операции с фиксированной запятой, перепишите код для использования типов с плавающей запятой.
Я считаю, что документация PowerVR (доступная как часть их бесплатного SDK) также упоминает об этом.
Кроме того, вам, вероятно, следует включить сборку Thumb на устройствах ARMv7 (iPhone 3G S и новее) и отключить ее для устройств ARMv6, поскольку это замедляет вычисления с плавающей запятой на последних, но не на первых, и можетприведет к повышению производительности на устройствах первого класса.
Наконец, когда речь заходит о матричных операциях, если вы хотите ориентироваться только на iOS 5.0, вы должны использовать новые математические математические функции, входящие в состав GLKit.Они используют NEON-ускоренные реализации для быстрой векторной математики.Вы также можете свернуть свою собственную или найти существующую реализацию, которая использует инфраструктуру Accelerate или прямые вычисления NEON.
Тем не менее, ни одна из этих областей, скорее всего, не станет для вас узким местом при выполнении рендеринга OpenGL ES.Используйте инструменты и другие инструменты, чтобы найти реальные области в вашем приложении, которые замедляют ваш рендеринг.Упомянутые мною оптимизации позволят сэкономить лишь немного времени.