Я запустил инструмент анализа OpenGL ES из Instruments в моем приложении, и он заявил, что после компиляции шейдера я должен вызвать glDrawArrays в прогрев перед прогоном.Итак, я проверил время некоторых шейдеров, которые я написал, и действительно, когда программа запускается в первый раз, она намного медленнее.
В моем коде у меня есть общий загрузчик шейдеров, который не знает форм / атрибутов шейдеровСкомпилируй.И кажется, что лучшее место для предварительного подогрева шейдера - там (поэтому мне не нужно добавлять glDrawArrays везде).Я попытался добавить это в свой загрузчик шейдеров:
glUseProgram(prog);
glDrawArrays(GL_TRIANGLES, 0, 0);
Это исправило задержку, но так как я не устанавливаю какие-либо униформы / атрибуты, я не уверен, безопасно ли это.Также это выглядит как обходной путь.Как лучше всего прогреть программу?