LWJGL Использование PBO для чтения пикселей не удается

1

Я пытаюсь читать из фреймбуфера асинхронно, но glReadPixels() генерирует ошибку INVALID_OPERATION.

Я прочитал, что может вызвать эту ошибку, но я не обнаружил никаких проблем в своем коде:

 int PBOHandle = glGenBuffers(); // PBOHandle != 0
 int Width = Display.getDisplayMode().getWidth(); // 800
 int Height = Display.getDisplayMode().getHeight();// 600
 glReadBuffer(GL_FRONT);
 glBindBuffer(GL_PIXEL_PACK_BUFFER, PBOHandle);
 glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 // GL_INVALID_OPERATION right here
 glBindBuffer(GL_PIXEL_PACK_BUFFER, PBOHandle);
 ByteBuffer Buffer = glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_WRITE, null);
 /* stuff */
 glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
 glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);   
Теги:
opengl
lwjgl
pbo
glreadpixels

1 ответ

1
Лучший ответ

Вы не создали реальный пиксельный буферный объект. Все, что вы сделали, это создать имя для одного. Вы должны вызвать glBufferData() для создания фактического хранилища данных. Используйте NULL в качестве указателя данных для создания унифицированного буфера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню