OpenGL glReadPixels получает ошибку 1282
Я хотел бы создать закадровый рендер с OpenGL.
Я создал FBO
и RBO
позвонить glReadPixels()
, но я всегда получаю ошибку.
Это мой код:
// Init
GLuint fbo;
GLuint rbo;
glGenFramebuffers(1, &fbo);
glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, width, height);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
glClearColor(0.0f, 1.0f, 1.0f, 1.0f);
// Render loop
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
...
std::vector<unsigned char> output(width * height * 4);
glReadBuffer(GL_COLOR_ATTACHMENT0);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, &output[0]);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
// Deinit
glDeleteRenderbuffers(1, &rbp);
glDeleteFramebuffers(1, &fbo);
Вывод ничего не содержит и glGetError()
функция всегда возвращает 1282 (GL_INVALID_OPERATION)
после звонка glReadPixels()
,
В чем проблема с этим кодом?