Запуск React Native с (expo) GLView, вероятно, имеет ужасную производительность в симуляторе iOS, что делает его непригодным для разработки вашего приложения.
Моя установка:
"expo": "~47.0.8",
"expo-gl": "~12.0.0",
"expo-three": "^7.0.0",
"react": "18.1.0",
"react-native": "0.70.5",
"three": "~0.145.0"
Запуск простой сцены вращающегося куба рендерит несколько кадров в секунду на M1 Mac, работающем в симуляторе iOS (iPhone 14Pro, iOS 16.1) Тот же проект безупречно работает на симуляторе Android (Android 13 SDK, API33, пиксельное устройство).
Что можно сделать для ускорения рендеринга?
TLDR: Отключите сглаживание, которое включено по умолчанию для устройств iOS, в компоненте GLView.
При создании GLView передайте свойство msaaSamples и установите для него значение 0 (по умолчанию: 4).
<GLView
msaaSamples = {0}
onContextCreate = {....
Это приблизит производительность к симулятору Android.
Почему это помогает?
Я просто предполагаю, что это какая-то проблема с памятью. Мобильные дисплеи сетчатки для собственного использования, такие как 2K пикселей. Добавление 4-кратного сглаживания Multisample (short msaa) увеличивает в четыре раза объем видеопамяти, необходимый для хранения одного кадра.
Примечание. Не стесняйтесь добавлять комментарии о том, как повысить производительность, и я могу включить их в этот ответ.