我想将 OpenGL 与 glut 与 Qt 创建者结合起来。 我使用的是 Windows,我的 QT 版本是 4.7.4,32 位。
我按照教程进行操作:
http://www.youtube.com/watch?v=1nzHSkY4K18
我也查了一些其他人的问题,但他们没有给我答案。
包含过剩之前的部分效果很好。 但当我试图包括过剩时,它不起作用。 错误是:
对 glutInit_ATEXIT_HACK 的未定义引用
以及更多对 glutfunctions 的未定义引用。
我将 glut-libraries 和标头复制到 Minwg 文件夹中的相应文件夹中。 但我不确定这是否是正确的文件夹。
我是否必须为 Qt 获取特殊的 glut 和 OpenGL 库?我必须把它们放在哪里?
我想将 openGL 与 glut 结合到 QT 创建者
为什么? Qt 可以完成 GLUT 所做的一切,甚至更多。如果您已经在使用 Qt,则不需要 GLUT。你的要求毫无意义。
首先:QGLWidget 可以完成 GLUT 所做的一切,甚至更多。基本思想是从 QGLWidget 派生自定义 Widget 类并重写一些虚函数。 paintGL 是您通常注册的 GLUT 显示函数。还有resizeGL和initializeGL。
仅当窗口更改后需要重新初始化某些资源(例如后处理 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。
我是否必须为 QT 获取 glut 和 openGL 的特殊库?我必须把它们放在哪里?
不可以,但是 OpenGL 和(可选的 Glut)应该可以位于您的包含路径和库路径中。该错误表明它们不在包含路径中,或者您没有包含它们。
我第二个datenwolf。您不需要同时使用 Qt 和 Glut。如果您仅使用 glut 作为辅助函数(gluLookAt、gluQuadrics),您可以相当轻松地复制它们或简单地通过 google 进行复制。