警告:#warning qopenglfunctions.h与GLEW不兼容,GLEW定义将是未定义的[-Wcpp]

5 c++ opengl qt glew cmake

我正在配置一个与过剩协同工作的程序来与Qt一起工作.我正在使用Qt 5.1.1.似乎有些openGL功能已从Qt4丢失到Qt5.在我的程序中,我创建了一个QOpenGLContext,我正在尝试使用vbo渲染到QWindow.vbo部分工作正常.

该计划的其他一些部分取决于glew.运行程序时,我收到以下警告

#warning qopenglfunctions.h is not compatible with GLEW, GLEW defines will be undefined  [-Wcpp]
#warning To use GLEW with Qt, do not include <qopengl.h> or <QOpenGLFunctions> after glew.h [-Wcpp]
Run Code Online (Sandbox Code Playgroud)

屏幕输出为黑色.

当我评论出这条线

glBindBuffer(GL_PIXEL_UNPACK_BUFFER, vboId);
Run Code Online (Sandbox Code Playgroud)

它将pbo发送到纹理,随机图像呈现给屏幕.我假设这个随机图像存储在我试图访问的内存中.

显然,你不能一起使用glew和qopenglfunctions.

如果你想建议我使用QGLWidget而不是QWindow的QopenGLContext,请向我解释如何在Qt 5.1.1中使用QGLWidget和cmake.我已经阅读了许多答案,但是这些答案都没有在Qt 5.1.1中起作用.

小智 0

要将 GLEW 与 Qt 一起使用,请勿在 glew.h [-Wcpp] 之后包含 <qopengl.h> 或 <QOpenGLFunctions>

正如警告所示,您应该忽略 QOpenGLFunctions 包含指令,而使用 GLEW 包含指令。QT 在内部文件中的某处包含 QOpenGLFunctions 标头。