使用glut或者Qt中的QOpenGLWidget生成一个窗口,使用以下代码都正常渲染
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fbo2);
...
glBindFramebuffer(GL_FRAMEBUFFER, 0);
...
但是使用多个QOpenGLWidget时发现渲染不了,根据这篇博客知道窗口系统的FBO可能不为0,需要使用以下代码才能正常显示
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &m_oldFBO); // 保存当前的FBO句柄
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fbo2); // 绑定自定义FBO
...
glBindFramebuffer(GL_FRAMEBUFFER, m_oldFBO); // 绑定当前窗口的FBO
...