gpt4 book ai didi

c++ - 在 Linux 上为 OpenGL 4.2 设置开发环境(无法获取 gl.h)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:23 24 4
gpt4 key购买 nike

我正在使用 GLFW 和 Netbeans 在 C++ 中进行开发。我可以使用即时模式功能进行渲染,没问题。但是,当我尝试使用核心配置文件功能时,出现如下错误:

error: ‘glCreateShader’ was not declared in this scope

对于我尝试的每个核心配置文件函数,我都遇到了这些错误之一。我做了一些研究,发现 GLFW 不提供任何 gl header ,只提供 #include 在我的系统上找到的 header (位于/usr/include/GL/)。

据推测,这意味着此处找到的 gl.h 和相关文件仅包含旧式 OpenGL API。我无法理解十六进制代码,但 gl.h 文件 #defines GL_VERSION 为 0x1F02。

如果我在终端中执行此命令:glxinfo | grep -i opengl 它向我保证我的 OpenGL 版本字符串是“4.2.0 NVIDIA 304.88”——尽管我认为这反射(reflect)在驱动程序中,与 gl.h 文件无关。在我的应用程序的 C++ 代码中运行这一行会产生相同的字符串:printf("%s\n", glGetString(GL_VERSION)); 出于同样的原因,毫无疑问。

我在哪里可以为 Ubuntu 13.04 x64 上的 OpenGL 3+ 开发提供合适的 OpenGL 头文件?

我已经按照大多数教程的建议安装了这些包(无济于事):xorg-dev libglu1-mesa-dev

最佳答案

glCreateShader (...) 是一个 OpenGL 2.0 函数。

除了 OS X,我想不出有任何平台可以在不需要运行时扩展的情况下附带 OpenGL 2.0。在 Microsoft Windows 上,您可以保证拥有 OpenGL 1.1 的完整功能集,任何超出此功能的功能都需要调用 wglGetProcAddress (...) 来加载其余 OpenGL API 的函数入口点。 Linux 上的情况是一样的,尽管定义什么是“最小”特性集更加困难。在任何情况下,要使用 glCreateShader (...),您都必须调用 glXGetProcAddress (...) 才能从驱动程序获取入口点.

像 GLEW 这样的库将通过为您的驱动程序支持的每个扩展和核心版本的 OpenGL 加载每个函数的入口点,让您的生活更轻松,在 Ubuntu 上,甚至应该有一个您可以安装的包含 GLEW 的包。尽管如此,请参阅 official project site有关实际使用 GLEW 的更多详细信息。

关于c++ - 在 Linux 上为 OpenGL 4.2 设置开发环境(无法获取 gl.h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310451/

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