代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

如何将glew与qt结合使用?

  •  4
  • Armen Tsirunyan  · 技术社区  · 14 年前

    我想在Windows下使用带有qt的glew(如果这很重要的话是7)。

    我所做的就是访问glew网站,下载Windows软件包,然后将glew.dll放到system32文件夹中。在我的pro文件中,我引用了.lib文件 LIBS += .../path_to_the_libs/glew32.lib 同样适用于 glew32s.lib (不知道后者是干什么的)。在我的qglwidget子类中,我确保 glew.h 包括在之前 <QGLWidget> 因此之前 gl.h glu.h . 在 main() 函数我要做的第一件事是调用 glewInit 然后打电话 glGetError 但是我的应用程序退出时带有一些奇怪的代码,比如一个非常大的负数。

    我怀疑我做错了很多事情(我对qt和opengl比较陌生,对glew绝对陌生),但我也怀疑其中一个主要错误是libs是用msvc构建的,因此不能与mingw相关联。不管怎样,是否有人能提供一个逐步的说明如何安装带有qt的glew并使用它?我会非常感激的。提前谢谢你

    编辑: 伙计们,也许我要求的太多了,但我真的很想一步一步的指导:)

    2 回复  |  直到 13 年前
        1
  •  7
  •   Kos    14 年前

    你不应该打电话 glewInit() 在准备好OpenGL上下文之前。就在你第一次打电话之前 gl* 呼叫,而不是在 main . 这应该能解决问题。

    另外,不要使用 glew32.lib glew32s.lib 同时-前者与dll文件一起使用,后者是静态的(您的.exe会变大,但您不必将应用程序与.dll一起分发)。决定并使用其中之一。

        2
  •  0
  •   przemo_li    13 年前

    Qt4.7可以创建任何OpenGL上下文。使用qglformat.setprofile()和qglformat.setversion()。

    唯一的缺点是您仍然没有OpenGL3+绑定。

    逐步解决方案:

    1. 生成qglwindget的新子类。
    2. 在新类的构造函数中,使用适当的OpenGL编号设置新的QGLContext。
    3. 调用glewinit()。
    4. 将上下文传递给构造函数qglwidnet。

    如果我没记错的话,应该是这样的!glew dll应该放在适当的系统文件夹中,并附加编译器选项,但它们与不带qt的glew相同。