我如何知道我使用的是哪个版本的OpenGL?

Trt*_*Trt 25 opengl

我开始使用GLFW和OpenGL在C(现在)编写程序.我的问题是,我怎么知道我的程序将使用哪个版本的OpenGL?我的笔记本电脑说我的视频卡有OpenGL 3.3.输入"glxinfo | grep -i opengl"返回:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 9600M GT/PCI/SSE2
OpenGL version string: 3.3.0 NVIDIA 285.05.09
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL extensions:
Run Code Online (Sandbox Code Playgroud)

那么OpenGL 3.3会被自动使用吗?

Chr*_*ica 20

只需调用glGetString(GL_VERSION)(当然初始化上下文)并输出结果(实际上与glxinfo的作用相同,我想):

printf("%s\n", glGetString(GL_VERSION));
Run Code Online (Sandbox Code Playgroud)

您的程序应该自动使用硬件和驱动程序支持的最高版本,在您的情况下似乎是3.3.但是,要为OpenGL 3+创建核心配置文件上下文(已弃用功能已被完全删除),您必须采取特殊措施.但是,由于版本2.7 GLFW具有使用该glfwOpenWindowHint功能的方法.但是,如果您不想明确禁止已弃用的功能,则可以使用GLFW的默认上下文创建功能为您提供的上下文,该功能将支持您的硬件和驱动程序的最高版本.

但是请记住,对于使用高于1.1版的OpenGL功能,您需要检索相应的函数指针或使用为您处理此问题的库,如GLEW.

  • @MartinBeckett:这不仅仅是Windows限制.大多数Linux OpenGL标题不包含任何超过OpenGL 1.2左右的内容.你必须使用glXGetProcAddress来获取其他任何东西的函数指针.此外,您根本不必在Windows上_manually_加载DLL; 这就是wglGetProcAddress的用途. (3认同)