我开始使用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:
OpenGL 3.3自动使用了吗?
答案 0 :(得分:20)
只需调用glGetString(GL_VERSION)
(当然,一旦初始化了上下文)并输出结果(实际上与glxinfo的作用相同,我想):
printf("%s\n", glGetString(GL_VERSION));
您的程序应该自动使用您的硬件和驱动程序支持的最高版本,在您的情况下似乎是3.3。但是,要为OpenGL 3+创建核心配置文件上下文(已弃用功能已被完全删除),您必须采取特殊措施。但是,由于版本2.7 GLFW具有使用glfwOpenWindowHint
函数执行此操作的方法。但是,如果您不想明确禁止已弃用的功能,则可以使用GLFW的默认上下文创建功能为您提供的上下文,该功能将支持您的硬件和驱动程序的最高版本。
但请记住,对于使用高于1.1版的OpenGL功能,您需要检索相应的函数指针或使用为您处理此问题的库,例如GLEW。