glewGetString(GLEW_VERSION) 和 glewIsSupported 之间的区别
Difference between glewGetString(GLEW_VERSION) and glewIsSupported
我按照 https://www.opengl.org/wiki/Creating_an_OpenGL_Context_(WGL) 中的描述在 Windows 7 机器上创建了 OpenGL 上下文。
上下文创建成功,但似乎有一些问题。
因为我需要 vertex/fragment 着色器,我至少需要 OpenGL 2.0 版(或一些扩展)。
初始化上下文并调用 glewInit 后,我使用以下命令检查了 OpenGL 上下文版本:
- glewGetString(GLEW_VERSION) 其中 returns "1.9.0"
- glewIsSupported("GL_VERSION_2_0") 其中 returns 1
两个 GLEW 函数报告不同的版本似乎很奇怪。 http://glew.sourceforge.net/basic.html .
上对两者进行了(部分)解释
此外,我认为对于 nvidia gtx 460,OpenGL 版本至少应为 4.0。我还想补充一点,所有 shader/program 函数指针(例如 glUseProgram)都不是 NULL 指针,它们可以工作.
是否有可靠的方法来判断创建的上下文的 OpenGL 版本?
编辑:
好的,这是解决方案。似乎 OpenGL/GLEW 具有相似的 function/parameter 名称,但 return 不同的版本。这是摘要:
- glewGetString(GLEW_VERSION) returns GLEW 版本
- glGetString(GL_VERSION) returns OpenGL 版本但仅适用于 3.0 以下的 OpenGL
- glewIsSupported("GL_VERSION_2_0") 检查是否支持 OpenGL 2.0 版
- if (GLEW_VERSION_2_0) 检查是否支持 OpenGL 2.0 版(不是 GLEW!!!)
- glGetIntegerv(GL_MAJOR_VERSION) 和 glGetIntegerv(GL_MINOR_VERSION) return OpenGL 版本,但仅适用于 OpenGL 3.0 及更高版本
此致
这两种方法不return相同的信息:
glGetString(GLEW_VERSION) returns GLEW 库的版本,而不是使用的 OpenGL 版本。相反,glewIsSupported 检查是否支持 OpenGL 版本。
为了获得上下文中使用的 OpenGL 版本,可以使用 glGetIntegerv 函数提供 GL_MAJOR_VERSION 和 GL_MINOR_VERSION 作为第一个参数。
我按照 https://www.opengl.org/wiki/Creating_an_OpenGL_Context_(WGL) 中的描述在 Windows 7 机器上创建了 OpenGL 上下文。
上下文创建成功,但似乎有一些问题。
因为我需要 vertex/fragment 着色器,我至少需要 OpenGL 2.0 版(或一些扩展)。 初始化上下文并调用 glewInit 后,我使用以下命令检查了 OpenGL 上下文版本:
- glewGetString(GLEW_VERSION) 其中 returns "1.9.0"
- glewIsSupported("GL_VERSION_2_0") 其中 returns 1
两个 GLEW 函数报告不同的版本似乎很奇怪。 http://glew.sourceforge.net/basic.html .
上对两者进行了(部分)解释此外,我认为对于 nvidia gtx 460,OpenGL 版本至少应为 4.0。我还想补充一点,所有 shader/program 函数指针(例如 glUseProgram)都不是 NULL 指针,它们可以工作.
是否有可靠的方法来判断创建的上下文的 OpenGL 版本?
编辑: 好的,这是解决方案。似乎 OpenGL/GLEW 具有相似的 function/parameter 名称,但 return 不同的版本。这是摘要:
- glewGetString(GLEW_VERSION) returns GLEW 版本
- glGetString(GL_VERSION) returns OpenGL 版本但仅适用于 3.0 以下的 OpenGL
- glewIsSupported("GL_VERSION_2_0") 检查是否支持 OpenGL 2.0 版
- if (GLEW_VERSION_2_0) 检查是否支持 OpenGL 2.0 版(不是 GLEW!!!)
- glGetIntegerv(GL_MAJOR_VERSION) 和 glGetIntegerv(GL_MINOR_VERSION) return OpenGL 版本,但仅适用于 OpenGL 3.0 及更高版本
此致
这两种方法不return相同的信息:
glGetString(GLEW_VERSION) returns GLEW 库的版本,而不是使用的 OpenGL 版本。相反,glewIsSupported 检查是否支持 OpenGL 版本。
为了获得上下文中使用的 OpenGL 版本,可以使用 glGetIntegerv 函数提供 GL_MAJOR_VERSION 和 GL_MINOR_VERSION 作为第一个参数。