【问题标题】:How to get the GL library/headers?如何获取 GL 库/头文件?
【发布时间】:2011-04-25 09:14:06
【问题描述】:
#include <gl\gl.h> 
#include <gl\glu.h> 
#include <gl\glaux.h>

这是一个示例,但是从哪里获取 GL 标头?

【问题讨论】:

标签: c++ opengl


【解决方案1】:

视窗

在 Windows 上,您需要包含 gl.h 标头以支持 OpenGL 1.1 并链接到 OpenGL32.lib。两者都是Windows SDK 的一部分。此外,您可能需要以下标头,您可以从 http://www.opengl.org/registry 获得。

Linux

在 Linux 上,您需要链接 libGL.so,它通常是指向 libGL.so.1 的符号链接,而 libGL.so.1 仍是指向作为图形驱动程序一部分的实际库/驱动程序的符号链接。例如,在我的系统上,实际的驱动程序库名为 libGL.so.256.53,这是我使用的 nvidia 驱动程序的版本号。您还需要包含 gl.h 标头,它通常是 Mesa 或 Xorg 包的一部分。同样,您可能需要来自http://www.opengl.org/registryglext.hglxext.hglxext.h 包含 GLX 扩展,相当于 Windows 上的 wglext.h

如果您想使用 OpenGL 3.x 或 OpenGL 4.x 功能而不使用移入 GL_ARB_compatibility 扩展的功能,请使用注册表网页中的新 gl3.h 标头。它取代了gl.hglext.h(只要您只需要核心功能)。

最后但并非最不重要的一点是,glaux.h 不是与 OpenGL 关联的标头。我假设你已经阅读了糟糕的 NEHE 教程并且只是跟着它去做。 Glaux 是一个非常过时的 Win32 库 (1996),用于加载未压缩的位图。使用更好的东西,比如 libPNG,它也支持 alpha 通道。

【讨论】:

  • 注意:上面的 Windows SDK 版本是 Windows 7。只需检查 Windows SDK 的最新版本(现在是 8.1,很快就会是 10)。检查文档以了解向后和向前兼容性。
  • MacOS 怎么样?
  • 在 Windows 7 x64 中,由于某种原因我不知道包括 gl.hglu.h 不起作用,只包括 windows.h
【解决方案2】:

Debian Linux(例如 Ubuntu)

sudo apt-get update
OpenGL: sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

窗口

找到放置库和头文件的 Visual Studio 文件夹,下载并将 lib 文件复制到 lib 文件夹,将头文件复制到头文件。然后将dll文件复制到system32。然后您的代码将 100% 运行。

还有Windows:对于所有这些,您只需下载glut32.libglut.hglut32.dll

【讨论】:

  • debian/ubuntu/其他衍生产品!= linux
  • 这个答案已有 10 年历史,但仍然帮助了我(Ubuntu LTS)。
  • @CoatedMoose 只是不要说什么不是,我们不需要知道某事不是,你能有朝一日说出它实际上是什么吗??
【解决方案3】:

在 Visual Studio 中:

//OpenGL
#pragma comment(lib, "opengl32")
#pragma comment(lib, "glu32")
#include <gl/gl.h>
#include <gl/glu.h>

标头在 SDK 中:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl

【讨论】:

    【解决方案4】:

    什么操作系统?

    在 Ubuntu 上,我有

    $ dpkg -S /usr/include/GL/gl.h 
    mesa-common-dev: /usr/include/GL/gl.h
    $ 
    

    但不是 a) 大写和 b) 正斜杠/反斜杠的区别。您的示例在使用反斜杠时可能是错误的。

    【讨论】:

      【解决方案5】:

      如果您使用的是 Windows,它们会随平台 SDK(或 Visual Studio)一起安装。但是,头文件仅与 OpenGL 1.1 兼容。您需要为更高版本的新功能创建函数指针。您能否说明您尝试使用的 OpenGL 版本。

      【讨论】:

        【解决方案6】:

        上面关于 linux 的一些答案要么不完整,要么完全错误。

        例如,/usr/include/GL/gl.h 不是 mesa-common-dev 的一部分或没有 已经很多年了。

        无论如何,要获得更当前的答案,这两个包很重要:

        https://mesa.freedesktop.org/archive/mesa-20.1.2.tar.xz

        ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.1.tar.xz

        glu.h 是 glu 本身的一部分:

        GL/glu.h
        GL/glu_mangle.h
        

        Mesa 显然要大得多。它的标题是 有点变量,我想,取决于给定的标志 到介子,但通常应该包括这些:

        KHR/khrplatform.h                                                                                                         
        EGL/eglplatform.h                                                                                                         
        EGL/eglext.h                                                                                                              
        EGL/eglextchromium.h                                                                                                      
        EGL/eglmesaext.h                                                                                                          
        EGL/egl.h                                                                                                                 
        vulkan/vulkan_intel.h
        gbm.h
        GLES3/gl31.h
        GLES3/gl3ext.h
        GLES3/gl3.h
        GLES3/gl32.h
        GLES3/gl3platform.h
        xa_composite.h
        xa_tracker.h
        xa_context.h
        GLES2/gl2.h
        GLES2/gl2platform.h
        GLES2/gl2ext.h
        GLES/gl.h
        GLES/glplatform.h
        GLES/glext.h
        GLES/egl.h
        GL/gl.h
        GL/glx.h
        GL/osmesa.h
        GL/internal
        GL/internal/dri_interface.h
        GL/glcorearb.h
        GL/glxext.h
        GL/glext.h
        

        希望能帮助任何人找到这个问题的答案 未来;编译dosbox需要这个,例如,由于 到 SDL opengl。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-26
          • 2020-01-28
          相关资源
          最近更新 更多