我目前从Qt4移植到Qt5。虽然Qt5仍然提供QGLWidget等类,但这些类将由QOpenGLWidget等替换。
目前我正在将复杂的东西绘制到帧缓冲对象中一次。然后我使用drawTexture()
方法在屏幕上绘制它(进入GL小部件):
target->drawTexture(rect, fb->texture());
之后,我用其他临时的东西透支了。因此,每当我需要更新临时内容时,我都可以重新使用framebuffer对象,而不是重新绘制复杂的内容。
然而,使用QOpenGLWidget以及QOpenGLContext,不再有方便的drawTexture()
方法。使用OpenGL手绘绘制纹理至少需要20行复杂的东西。我承认教科书的内容。
有没有优雅/ Qt方式将我的fbo内容放到屏幕上?例如,据记载,QOpenGLWidget也使用fbo作为后端。而不是绘制纹理,我们也可以blit FBO。但是如何?