OpenGL glReadPixels获取1282错误
我想用OpenGL创建一个屏幕外渲染器 我已经创建了一个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
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。谢谢你!它解决了这个问题。