【问题标题】:Setup glut to Qt Creator [duplicate]设置过剩到Qt Creator [重复]
【发布时间】:2013-02-15 17:25:15
【问题描述】:

我想将 OpenGL 与 glut 与 Qt 创建器结合起来。 我使用的是 Windows,我的 QT 版本是 4.7.4,32 位。

我按照教程进行操作:

http://www.youtube.com/watch?v=1nzHSkY4K18

我还查了一些其他人的问题,但他们没有给我答案。

包含 glut 之前的部分工作正常。 但是,当我尝试包含 glut 时,它不起作用。 错误是:

对 glutInit_ATEXIT_HACK 的未定义引用

还有更多未定义的对 glutfunctions 的引用。

我将 glut-libraries 和 headers 复制到 Minwg 文件夹中的相应文件夹中。 但我不确定这是否是正确的文件夹。

我是否必须为 Qt 获取 glut 和 OpenGL 的特殊库?我必须把它们放在哪里?

【问题讨论】:

  • 您是想将 GLUT 和 Qt 结合起来,还是只想使用 Qt Creator 来开发仅限 GLUT 的程序?
  • 我正在尝试使用 GLWidget,但我也想在其中使用 GLUT。

标签: c++ qt opengl compiler-construction glut


【解决方案1】:

我想将 openGL 与 glut 结合到 QT 创建者

为什么? Qt 做了 GLUT 所做的一切,还有更多。如果您已经在使用 Qt,则不需要 GLUT。你所要求的毫无意义。

因评论而更新

首先:QGLWidget 做了 GLUT 所做的一切,还有更多。其基本思想是从 QGLWidget 派生一个自定义的 Widget 类并覆盖一些虚函数。 paintGL 是您通常注册的 als GLUT 显示功能。还有resizeGLinitializeGL

如果您需要在窗口更改后重新初始化某些资源,例如后处理 FBO 纹理附件等,您只需要调整大小。 不要,我再说一遍不要把 glViewport 或投影设置之类的东西放在那里。它不属于那里。属于展示功能。

initializeGL 应该用于加载纹理和其他一次性的东西。不要在那里打电话给glEnable(GL_DEPTH_TEST)。这也属于显示功能。

所以基本要点变成了

class MyGLWidget : public QGLWidget 
{
Q_OBJECT
public:
    MyGLWidget(QGLWidget *parent):
        QGLWidget(parent)
    {}

protected:
    virtual void paintGL();
    virtual void resizeGL();
    virtual void initializeGL();
}

您在显示函数的末尾调用 QGLWidget::swapBuffers 而不是 glutSwapBuffers。

【讨论】:

  • 我对 GLUT 了解很多,但对 QT 了解一点。但是我该怎么办?
  • @abcdef:查看我的答案更新
【解决方案2】:

我是否必须为 QT 获取特殊的 glut 和 openGL 库?我必须把它们放在哪里?

不,但 OpenGL 和(可选 Glut)应该可以在您的包含和库路径中找到。该错误表明它们不在包含路径中,或者您没有包含它们。

我是第二个约会狼。您不需要同时使用 Qt 和 Glut。如果您仅将 glut 用于辅助函数(gluLookAt、gluQuadrics),您可以轻松地复制它们或简单地使用 google。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多