glClear работает очень медленно, когда drawableMultisample установлено в GLKViewDrawableMultisample4X
Я разрабатываю приложение для рисования для iOS. Я заметил, что когда я установил drawableMultisample в GLKViewDrawableMultisample4X, частота кадров упала с 60 до примерно 30. Я попытался понять, что вызвало это падение частоты кадров в секунду, и сократил цикл рендеринга до следующего кода:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Я ничего не рисую и выполняю только glClear. В этом цикле рендеринга fps равен 37. Тот же цикл рендеринга с drawableMultisample, установленным в GLKViewDrawableMultisampleNone, дает 60 кадров в секунду.
Я тестирую в iPad Air.
Можно ли повысить производительность при включенной мультисэмплинге?
1 ответ
iPad Air 1 имеет довольно высокое разрешение, но графический процессор недостаточно мощный, чтобы справиться с ним, как вы можете видеть в тестах, подобных этому, например, по сравнению с iPad Air 2 (iPad Air 2 более чем в 2 раза быстрее при том же разрешении)).
Когда вы активируете 4X MSAA, вы говорите графическому процессору фактически рендерить в 4 раза больше пикселей, поэтому неудивительно, что вы получаете снижение производительности даже при простой очистке экрана (MSAA применяется ко всему, поэтому при очистке экрана я предполагаю, что каждый пиксель очищается еще сглаживается)
Нередко игры на iPad... даже не использующие MSAA4X ... работают в уменьшенном разрешении (например, 75% / 50%), когда они имеют сложные фрагментные шейдеры. Обратите внимание, что при разрешении 50% разделенное число пикселей для обработки будет делиться на 4, а не на 2 (поскольку вы уменьшаете ширину и высоту на 50% => w*0,5*h*0,5 = w*h*0,25)
Так что вы должны либо:
- Примите 30fps в собственном разрешении и продолжайте использовать MSAA4X
- Запустите в уменьшенном разрешении (например, 50%), чтобы компенсировать MSAA, надеясь сохранить 60 кадров в секунду.
- Отключите MSAA и оставайтесь в родном разрешении
Предложение 2 может показаться немного странным, но вы должны его протестировать, оно может дать вам лучшее качество, чем 3 ... все зависит от того, насколько важен 60FPS для вас.
В заключение я могу сказать вам, что большинство сложных 3D-игр "AAA" на IOS, над которыми я работал, вообще не используют MSAA, у нас уже было достаточно проблем с производительностью без его включения... Только на iPhone6 (не 6+ слишком высокое разрешение) или iPad Air 2, вы можете в конечном итоге рассмотреть MSAA, если ваша игра уже имеет гарантированные постоянные 60FPS.