如何删除没有相应的makeCurrent()调用的QOpenGLContext :: swapBuffers()

时间:2015-03-23 08:55:09

标签: qt opengl qt-creator qglwidget

如何在调试/发布模式的Qt 5.4.1中停止此警告。

QOpenGLContext::swapBuffers() called without corresponding makeCurrent()

它只出现在调试模式下,但VS2010的释放模式很好。 它出现在QtCreator的两种模式(Debug& Release)中。

我已经尝试了很多方法来删除它但没有成功,搜索谷歌但无法找到任何有用的信息。

平台:Windows 8.1- VS2010- Qt_Creator Nvidia GTX 765

感谢。

2 个答案:

答案 0 :(得分:1)

认真回答:通过向Qt开发人员提交错误报告。在没有绑定OpenGL上下文的情况下在drawable上调用SwapBuffers是完全没问题的。实际上SwapBuffers不属于OpenGL上下文而是属于窗口,因此将此方法放在QGLContext中本身就是一个很大的设计失败。


个人咆哮(希望有些Qt开发人员最终会看到它):

这些人(就像我得到的每一个其他工具包开发者社区一样)真的需要一些暑期学校,了解OpenGL如何工作以及你应该和不应该做什么。我知道没有工具包能够正确地获得OpenGL上下文管理。如果开发一个工具包并不是那么多工作我会去"很好,我会开发自己的GUI工具包,使用Blackjack和妓女......"

答案 1 :(得分:0)

您应该修改代码,而不是抑制警告。如果您想从社区获得一些提示,您可以展示SSCCE。

但如果您仍想要取消警告,则需要关注Qt documentation