OpenGL glReadPixels获取1282错误

OpenGL glReadPixels获取1282错误,opengl,fbo,glreadpixels,off-screen,Opengl,Fbo,Glreadpixels,Off Screen,我想用OpenGL创建一个屏幕外渲染器 我已经创建了一个FBO和一个RBO来调用glReadPixels(),但是我总是得到一个错误 这是我的代码: // Init GLuint fbo; GLuint rbo; glGenFramebuffers(1, &fbo); glGenRenderbuffers(1, &rbo); glBindRenderbuffer(GL_RENDERBUFFER, rbo); glRenderbufferStorage(GL_RENDERBUF

我想用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);
//初始化
GLuint fbo;
GLuint-rbo;
GLGEN帧缓冲区(1,&fbo);
glGenRenderbuffers(1,&rbo);
glbinderbuffer(GL_RENDERBUFFER,rbo);
GLrenderBuffer存储(GL_RENDERBUFFER,GL_RGBA8,宽度,高度);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo);
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_RENDERBUFFER,rbo);
glClearColor(0.0f、1.0f、1.0f、1.0f);
//渲染循环
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo);
...
标准::矢量输出(宽度*高度*4);
glReadBuffer(GL_COLOR_ATTACHMENT0);
glReadPixels(0,0,宽度,高度,GL_RGBA,GL_无符号字节,&输出[0]);
glBindFramebuffer(GL\u DRAW\u FRAMEBUFFER,0);
//脱硝
glDeleteRenderbuffers(1,&rbp);
glDeleteFramebuffers(1和fbo);
输出不包含任何内容,
glGetError()
函数在调用
glReadPixels()
后总是返回
1282(GL\u无效\u操作)


这个代码有什么问题吗?

你能给我们一个MCVE吗?有关详细信息,请参阅“帮助”。您需要将FBO绑定到
GL\u READ\u帧缓冲区
进行读取。顾名思义:
DRAW
=DRAW,
READ
=reading。谢谢你!它解决了这个问题。