Просто используйте функции, чтобы сделать копирование, и позвольте драйверу выяснить, как делать то, что вы хотите, скорее всего, пока вы копируете напрямую в буфер вершин, он на самом деле не будет делать копию, а просто сделает ваш VBO ссылка на данные.
Главное, что нужно быть осторожным, это то, что некоторым драйверам может не нравиться то, что вы используете то, что, как вы сказали, было для вершинных данных с операцией для пиксельных данных ...
Изменить: возможно что-то вроде следующего может или не может работать ... (IIRC спецификация говорит, что это должно)
int vbo;
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, vbo);
// use appropriate pixel formats and size
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo);
// draw stuff
Отредактировано для исправления привязок буфера благодаря Phineas