【发布时间】:2011-04-25 09:14:06
【问题描述】:
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
这是一个示例,但是从哪里获取 GL 标头?
【问题讨论】:
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
这是一个示例,但是从哪里获取 GL 标头?
【问题讨论】:
在 Windows 上,您需要包含 gl.h 标头以支持 OpenGL 1.1 并链接到 OpenGL32.lib。两者都是Windows SDK 的一部分。此外,您可能需要以下标头,您可以从 http://www.opengl.org/registry 获得。
<GL/glext.h> - OpenGL 1.2 及更高版本的兼容性配置文件和扩展接口..<GL/glcorearb.h> - OpenGL 核心配置文件和 ARB 扩展接口,如 OpenGL 4.3 规范的附录 G.2 中所述。不包括仅在兼容性配置文件中找到的接口。<GL/glxext.h> - GLX 1.3 及更高版本的 API 和 GLX 扩展接口。<GL/wglext.h> - WGL 扩展接口。在 Linux 上,您需要链接 libGL.so,它通常是指向 libGL.so.1 的符号链接,而 libGL.so.1 仍是指向作为图形驱动程序一部分的实际库/驱动程序的符号链接。例如,在我的系统上,实际的驱动程序库名为 libGL.so.256.53,这是我使用的 nvidia 驱动程序的版本号。您还需要包含 gl.h 标头,它通常是 Mesa 或 Xorg 包的一部分。同样,您可能需要来自http://www.opengl.org/registry 的glext.h 和glxext.h。 glxext.h 包含 GLX 扩展,相当于 Windows 上的 wglext.h。
如果您想使用 OpenGL 3.x 或 OpenGL 4.x 功能而不使用移入 GL_ARB_compatibility 扩展的功能,请使用注册表网页中的新 gl3.h 标头。它取代了gl.h 和glext.h(只要您只需要核心功能)。
最后但并非最不重要的一点是,glaux.h 不是与 OpenGL 关联的标头。我假设你已经阅读了糟糕的 NEHE 教程并且只是跟着它去做。 Glaux 是一个非常过时的 Win32 库 (1996),用于加载未压缩的位图。使用更好的东西,比如 libPNG,它也支持 alpha 通道。
【讨论】:
gl.h 和 glu.h 不起作用,只包括 windows.h
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.lib、glut.h、glut32.dll。
【讨论】:
在 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
【讨论】:
什么操作系统?
在 Ubuntu 上,我有
$ dpkg -S /usr/include/GL/gl.h
mesa-common-dev: /usr/include/GL/gl.h
$
但不是 a) 大写和 b) 正斜杠/反斜杠的区别。您的示例在使用反斜杠时可能是错误的。
【讨论】:
如果您使用的是 Windows,它们会随平台 SDK(或 Visual Studio)一起安装。但是,头文件仅与 OpenGL 1.1 兼容。您需要为更高版本的新功能创建函数指针。您能否说明您尝试使用的 OpenGL 版本。
【讨论】:
上面关于 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。
【讨论】: