在Linux上为OpenGL 4.2设置开发环境(故障排除gl.h)

Sco*_*rew 1 c++ linux opengl

我正在使用GLFW和Netbeans来开发C++.我能用立即模式功能渲染没问题.但是,当我尝试使用核心配置文件函数时,我得到如下错误:

error: ‘glCreateShader’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我尝试了每个核心配置文件函数的错误之一.我做了一些研究,发现GLFW没有提供任何gl标题,只是#include在我的系统上找到的标题(在/ usr/include/GL /).

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

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

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

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

And*_*man 5

glCreateShader (...) 是一个OpenGL 2.0功能.

缺少OS X,我想不出OpenGL 2.0附带的任何平台,而不需要运行时扩展.在Microsoft Windows上,您可以获得OpenGL 1.1的完整功能集,除此之外的任何内容都需要调用wglGetProcAddress (...)来加载OpenGL API的其余部分的函数入口点.Linux上的情况是相同的,尽管定义"最小"功能集的内容更加困难.在任何情况下,要使用glCreateShader (...)你将不得不打电话glXGetProcAddress (...),以获得驱动程序的入口点.

像GLEW这样的库可以通过为每个扩展和驱动程序支持的核心版OpenGL加载入口点来让您的生活更轻松,在Ubuntu上甚至应该有一个包含GLEW的软件包.不过,有关实际使用GLEW的更多详细信息,请参阅官方项目网站.