【发布时间】:2016-03-31 00:33:21
【问题描述】:
我正在将我的应用程序从使用 Qt 5.3.2 的 QGLWidget 升级到使用 QT 5.6.0 的 QOpenGLWidget。该应用程序已升级并运行良好。但是,我一直试图保留我的调试工具。我的开发环境是 Visual Studio 2013,尽管最终应用程序使用双缓冲图形,但出于调试目的,我编写了一些方法,可以从调试器交互调用,绘制到前端缓冲区并在屏幕上查看输出。这些函数不再起作用,因为 QOpenGLWidget 绘制到帧缓冲区。此外,即使在我调用 glDrawBuffer(GL_FRONT) 时尝试绘制之前,它也会生成 glError 到 1280(无效枚举)。额外的数据——glGetIntegerv(GL_DRAW_BUFFER, &my_val) 返回 0x8ce0,即 GL_COLOR_ATTACHMENT0,即使我的意图是将 GL 功能限制为仅 2.0,它也适用于 GL 3.0。
【问题讨论】:
-
QOpenGLWidget 绘制到中间 FBO,因此它需要 OpenGL 3 / OpenGL 2 + FBO / OpenGL ES 2,并且不提供对
GL_FRONT绘制缓冲区的访问。如果您真的需要它,请改用QOpenGLWindow+createWindowContainer。 -
感谢您的建议。听起来这需要相当多的工作。
-
@peppe 的建议(大部分)效果很好。尽管我不确定如何克服,但仍然存在键盘焦点问题。 stackoverflow.com/questions/37196155/…