对于OpenGL,客户端API版本号是OpenGL版本号吗?

对于OpenGL,客户端API版本号是OpenGL版本号吗?,opengl,glfw,Opengl,Glfw,它说: GLFW_CONTEXT_VERSION_MAJOR和GLFW_CONTEXT_VERSION_MINOR指定 创建的上下文必须与之兼容的客户端API版本。 这些提示的确切行为取决于请求的客户端API。 我也在关注这一点 对于功能,是否确实存在以下情况: glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); 我在函数中输入的数字将是OpenGL的版本号?

它说:

GLFW_CONTEXT_VERSION_MAJOR和GLFW_CONTEXT_VERSION_MINOR指定 创建的上下文必须与之兼容的客户端API版本。 这些提示的确切行为取决于请求的客户端API。 我也在关注这一点

对于功能,是否确实存在以下情况:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
我在函数中输入的数字将是OpenGL的版本号? 例如,如果我有OpenGL 4.6版,我会:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);

正确吗?

您正在使用的客户端API将是OpenGL,这些窗口提示用于创建OpenGL上下文。当对GLFW_CONTEXT_VERSION_MAJOR/MINOR使用glfwWindowHint()时,您正在请求该版本的OpenGL。根据您的GPU支持的内容,您可能会得到它,或者您可能会得到一个更早的版本


旁注-您无法在运行时获得GPU支持的最新版本,但您可以使用glGetString(GLU版本)获取所创建上下文的版本。

“根据GPU支持的内容,您可能会获得该版本,也可能会获得早期版本。”不,不是这样。你可以直接得到你想要的,或者任何兼容的版本(这意味着任何更高的版本没有删除你所要求的版本中仍然存在的任何旧功能)。您永远不会得到低于请求的版本,GL上下文创建(使用GLFW,整个窗口创建)将失败。