Я хочу использовать два PBO для чтения пикселей альтернативным способом. Я думал, что способ PBO будет намного быстрее, потому что glReadPixels возвращается немедленно при использовании PBO, и много времени может перекрываться.
Странно, кажется, что не так много пользы. Учитывая некоторый код вроде:
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
Timer t; t.start();
glReadPixels(0,0,1024,1024,GL_RGBA, GL_UNSIGNED_BYTE, buf);
t.stop(); std::cout << t.getElapsedTimeInMilliSec() << " ";
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pbo);
t.start();
glReadPixels(0,0,1024,1024,GL_RGBA, GL_UNSIGNED_BYTE, 0);
t.stop(); std::cout << t.getElapsedTimeInMilliSec() << std::endl;
Результат
1.301 1.185
1.294 1.19
1.28 1.191
1.341 1.254
1.327 1.201
1.304 1.19
1.352 1.235
Способ PBO немного быстрее, но неудовлетворительный немедленный -возврат 。
Мой вопрос:
================================================== =========================
По сравнению с демо я обнаружил два фактора:
Затем еще два вопроса: