glReadPixels с FBO слишком медленный - PullRequest
3 голосов
/ 28 декабря 2011

Я использую openGL ES 2.0 и GLSL-шейдер и работаю над FBO с Renderbuffer, то есть закадровым рендерингом.
Работает нормально с 30 к / с .
Но когда я использую glReadPixels или glcopyteximage2d, оно падает до 8 к / с .
Я сделал что-то вроде:

glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
//DRAW something
glReadPixels(...); //HERE
glBindFramebuffer(GL_FRAMEBUFFER, 0);

Можно ли как-нибудь улучшить скорость?Я имею в виду, что когда я не использую FBO и не использую glReadPixels с такими же параметрами, это работает 15 кадров в секунду , и я подумал, что использование FBO может улучшить скорость?

1 Ответ

5 голосов
/ 28 декабря 2011

Это плохой (очень плохой) способ получения данных OpenGL (с использованием любой из glGet*** функций).Чтобы скопировать текстуру или ее часть на экран / другую текстуру, вы можете нарисовать ее с помощью квадратора.Если вам нужны данные пикселей для некоторой логической обработки, было бы лучше сделать кадровый буфер как можно меньшим и читать его только при необходимости.

...