gpt4 book ai didi

opengl - OpenGL 文件 glew.h 和 gl.h/glu.h 之间的区别

转载 作者:行者123 更新时间:2023-11-30 16:31:23 30 4
gpt4 key购买 nike

我已经使用 Windows 7 专业版中默认包含的 glu 和 gl 头文件构建了一个 OpenGL 程序。现在,我买了一本描述 OpenGL 游戏开发的书。这本书的作者说,我必须将glew header 包含到我的项目中。完成此操作后,我遇到了一些 Unresolved external symbol 错误。

所以,现在我真的很困惑。我之前在程序中使用过 glBegin 和 glEnd 语句。现在我必须使用 glBindBuffers 和 glGenBuffer 等,但我遇到了 Unresolved external symbol 错误,如下所示:

1>cWindows.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBufferData
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewGenBuffers

这里有人可以解释这些头文件之间的区别以及我要如何处理它们吗?

我看了很多次,但在不同的网站上,有更多令人困惑的词,比如“glee”或“glut”。

最佳答案

你在这里混淆了 3 种不同的东西:

  1. OpenGL
  2. 不属于 OpenGL 的 GL 实用程序 (GLU)
  3. 和 GL Extension Wrangler (GLEW)

GLEW 和 GLU 是完全不同的东西,你不能用另一种来替换。

GL/gl.h是基本的 OpenGL header ,它为您提供 OpenGL-1.1 函数和 token 声明,甚至更多。对于 1.1 版以上的任何内容,您必须使用 OpenGL 扩展机制。由于这是一项枯燥乏味的任务,因此 GLEW 项目已将其自动化,该项目将所有脏细节打包在一个易于使用的库中。该库的声明可以在头文件GL/glew.h中找到。 。由于如果没有基本 OpenGL,Op​​enGL 扩展就没有意义,因此 GLEW header 隐式包含常规 OpenGL header ,因此包含 GL/glew.h您不再需要包含 GL/gl.h .

还有 GLU,这是一组方便的方法,顺便说一句,它们已经严重过时了,不应该在任何现代 OpenGL 程序中使用。没有现代的 GLU,所以忘记它吧。不管怎样,它的声明是通过标题 GL/glu.h 提供的。 (你问的那个)。

但是,您遇到的错误与包含文件无关。这些是链接器错误。仅包含声明只是工作的一半。另一半是链接实际的定义,这些定义不在库文件的 header 中; libglew.solibglew.a在 *nix 操作系统上,glew.libglew32.libglews.libglew32s.lib在 Windows 上。如果不使用静态版本(没有“s”的版本),您还必须安装正确的 DLL。

因此,要使用 GLEW,您需要包含 header 并将其添加到链接器选项中的库列表中。您还必须调用glewInit();一旦您在程序中获得了 OpenGL 上下文。

关于opengl - OpenGL 文件 glew.h 和 gl.h/glu.h 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50649552/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com