0

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

我按照教程:

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

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

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

未定义对 glutInit_ATEXIT_HACK 的引用

以及更多未定义的对 glutfunctions 的引用。

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

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

4

2 回答 2

3

我想将 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。

于 2013-02-15T17:26:46.387 回答
1

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

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

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

于 2013-02-15T21:21:16.520 回答