Я пишу приложение для Android, которое использует фрагментные шейдеры для обработки изображений. Я использую два FBO с текстурами в качестве цветовых вложений, чтобы я мог перевернуть их и сделать более одного прохода над исходным изображением.
Все хорошо, приложение работает просто отлично. Тем не менее, я пытаюсь установить время, используя System.currentTimeMillis()
и GLES20.glFinish()
между последовательными вызовами OpenGL.
То, что я вижу по времени, удивляет меня. Во-первых, время довольно стабильно между разными прогонами. Во-вторых, вызов glReadPixels
, кажется, зависит от сложности моего шейдера, то есть если графический процессор тратит больше времени на обработку изображения, он тратит больше времени на чтение пикселей из текстуры FBO. Имейте в виду, я поставил GLES20.glFinish()
перед звонком GLES20.glReadPixels
, но не имеет значения, положил я это или нет.
Есть ли у вас какие-либо понятия о том, почему такая зависимость может существовать? Это проблема на базе Android, то есть Android вообще не выполняет вызовы glFinish()
?
Спасибо!