不同于OpenGL,Qt中的QOpenGLWidget类的对象不存在默认的Framebuffer,即当前Framebuffer的id不一定是0。
通过context()->defaultFramebufferObject()可以获取当前Framebuffer的id。经过实验发现,在initializeGL()中的Framebuffer初始为0,而paintGL()中则默认新创建了一个Framebuffer。因此,需要在paintGL()中通过context()->defaultFramebufferObject()获取id,之后才能进行glBindFramebuffer()等操作。
网友评论