如何在 Qt 中使用 GLEW?

发布于 2024-10-03 12:50:07 字数 726 浏览 8 评论 0原文

我想在 Windows 下将 GLEW 与 Qt 一起使用(7,如果有的话)。

我所做的就是访问 GLEW 网站,下载适用于 Windows 的软件包,然后将 glew.dll 放入 System32 文件夹中。在我的 pro 文件中,我使用 LIBS += .../path_to_the_libs/glew32.lib 引用了 .lib 文件,对于 glew32s.lib 也是如此(不确定什么是后者是为了)。在我的 QGLWidget 子类中,我确保 glew.h 包含在 之前,因此包含在 gl.h之前glu.h。在 main() 函数中,我做的第一件事是调用 glewInit 并调用 glGetError 但我的应用程序退出时出现一些奇怪的代码,就像一个非常奇怪的代码大负数。

我怀疑我可能做错了很多事情(我对 Qt 和 OpenGL 相对较新,对 GLEW 绝对陌生),但我也怀疑主要错误之一是我认为库是使用 MSVC 构建,因此无法与 MinGW 链接...无论如何,任何人都可以提供如何使用 Qt 安装 GLEW 并使用它的分步说明吗?我将非常感激。预先感谢您

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

I want to use GLEW with Qt under Windows (7 if that matters).

What I did was go to the GLEW website, download the package for windows, then put the glew.dll in System32 folder. In my pro file, I referenced the .lib files with LIBS += .../path_to_the_libs/glew32.lib and the same for glew32s.lib (not sure what the latter's for). In my QGLWidget subclass, I made sure that glew.h is included before <QGLWidget> and therefore before gl.h and glu.h. In the main() function the first thing I do is call glewInit and call glGetError but my application exits with some weird code, like a very large negative number.

I have a suspicion that there are very may thing I do wrong(I am relatively new to Qt and OpenGL and absolutely new to GLEW), but I also have a suspicion that one of the major errors is that the libs, I suppose, were built with MSVC and therefore cannot be linked against with MinGW... Anyway, can anyone please provide a step-by-step instruction how to install GLEW with Qt and use it? I would much appreciate it. Thank you in advance

Edit:
Guys, maybe I am asking for too much, but I would really really like a step-by-step instruction :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦上情书 2024-10-10 12:50:07

在准备好 OpenGL 上下文之前,您不应该调用 glewInit()。在第一次 gl* 调用之前调用它,而不是在 main 的开头。那应该可以解决问题。

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

You're not supposed to call glewInit() before you have your OpenGL context ready. Call it just before your first gl* calls, not at the beginning of main. That should do the trick.

Also, don't use glew32.lib and glew32s.lib simultaneously - the former is to use along with the DLL file and the latter is static (your .exe gets bigger but you don't have to distribute your application with the .dll). Decide and use either.

×眷恋的温暖 2024-10-10 12:50:07

Qt 4.7 可以创建任何 OpenGL 上下文。使用 QGLFormat.setProfile() 和 QGLFormat.setVersion()

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

逐步解决方案:

  1. 创建QGLWindget的新子类。
  2. 在新类的构造函数中,使用正确的 OpenGL 编号设置新的 QGLContext。
  3. 调用 glewInit()。
  4. 将上下文传递给构造函数 QGLWidnet。

如果我没记错的话应该可以! GLEW dll 应放置在正确的系统文件夹中,并附加编译器选项,但它们与不带 QT 的 GLEW 相同。

Qt 4.7 can create any OpenGL Context. Use QGLFormat.setProfile() and QGLFormat.setVersion()

The only disadvantage is that you still do not have OpenGL 3+ bindings.

Step by step solution:

  1. Make new subclass of QGLWindget.
  2. In constructor of new class set up new QGLContext with proper OpenGL numbers.
  3. Call glewInit().
  4. Pass context to constructor QGLWidnet.

If I remember correctly it should do! GLEW dll should be placed in proper system folders, and compiler options attached, but they are the same as for GLEW without QT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文