【发布时间】:2016-02-29 15:55:41
【问题描述】:
对不起,如果这是一个非常基本的问题,但我很困惑:
我正在使用 Visual Studio,我正在创建一个自定义 QOpenGLWidget 类(通过从基类继承),我的问题如下:
- 如果我在自定义类中添加
#include <QOpenGLWidget>,并为glew.h添加#include,我可以访问glew.h中定义的内容 - 但是如果我在我的自定义类中添加
#include <QtWidgets>(虽然我也会涵盖QOpenGLWidget),那么我无法访问glew.h中定义的内容,并且我看到“标识符未定义”错误(对于例如,glGenVertexArrays)
有人可以告诉我我在这里缺少什么吗?我猜想包含我只需要的东西 (#include <QOpenGLWidget>) 比 <QtWidgets> 中的一大堆东西要好,但它为什么要阻止我访问 glew.h 中定义的东西呢?
感谢任何帮助
【问题讨论】:
-
请注意,
#include <QtWidgets>意味着#include <QtGui>,而#include <qopengl.h>又包含一些 OpenGL 标头。也许glew.h有一些#ifndef保护会被触发。 -
顺便说一句,你确定你需要 GLEW 吗?
-
@peppe 我认为我需要 GLEW,因为我正在调用直接的 OpenGL API 函数,并且我没有使用 Qt 中的包装器。我错过了什么吗?
-
只是你可以在 Qt 中使用直接包装器 :-)
-
@peppe:除了他不能,因为他们不会把所有东西都包起来。它们提供通用的 OpenGL ES 2 接口,而不是完整的桌面 GL。