OpenGL.Qt551.问题

1、Qt551 + vs2013 + Win7x64

 缘由:将“教程14:渲染到纹理.html(http://www.opengl-tutorial.org/cn/intermediate-tutorials/tutorial-14-render-to-texture/)”("E:OpenGL_somethingogl-master utorial14_render_to_texture")中的代码 改成 Qt的(原来是 C++&glfw)

 问题:在 使用 帧缓存(Framebuffer)的时候出现问题:在paintGL(...)中 始终无法将图形画到窗口中

 解决:使用 自定义的帧缓存的方式是"glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);",这个是一样的 没区别;但是 在切换到默认窗口帧缓存时,C++&glfw中使用"glBindFramebuffer(GL_FRAMEBUFFER, 0);"(GL_NONE),我以为 Qt中也是这样,但是 实际上却是 "glBindFramebuffer(GL_FRAMEBUFFER, context()->defaultFramebufferObject());"...(这里的 context()是QOpenGLWidget.context())

 ZC:glBindFramebuffer(...)的第二个参数 我是从 Qt551源码里面看来的,具体主要搜索看如下4个函数:

QOpenGLFramebufferObjectPrivate::init()
QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, Attachment attachment,
                                           GLenum target, GLenum internal_format)
QOpenGLFramebufferObject::bind()
bool QOpenGLFramebufferObject::release()

2、

3、

4、

5、

原文地址:https://www.cnblogs.com/cppskill/p/10883539.html