2

我在这里遵循了基本说明:

http://www.opengl.org/wiki/Tutorial:_OpenGL_3.1_The_First_Triangle_%28C%2B%2B/Win%29#Rendering_Context_Creation

我唯一调整的是将上下文创建为 3.2 或 3.3:

const int attributes[] =
{
    WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
    WGL_CONTEXT_MINOR_VERSION_ARB, 2,
    WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
    0
};

然后在创建上下文(成功返回 TRUE)后,我检查版本:

// Double check the version (old way)
const GLubyte *const pszGLVersion = glGetString(GL_VERSION);

// Double check the version (new way)
GLint glVersion[2];
glGetIntegerv(GL_MAJOR_VERSION, &glVersion[0]);
glGetIntegerv(GL_MINOR_VERSION, &glVersion[1]);

但是,pszGLVersion 为 NULL,并且 glVersion[0] 和 glVersion[1] 都未初始化!

为什么 OpenGL 3.2 & 3.3 上下文创建成功,但无法获取版本信息?

4

2 回答 2

2

您是否使上下文成为当前的?您会注意到它glGetString不带上下文参数,它适用于当前上下文。直到调用之后才能使用它wglMakeCurrent,默认情况下新创建的上下文不会成为当前上下文。

于 2011-03-14T21:25:09.357 回答
0

我认为我无法获取版本信息的原因是因为我的显卡不支持3.2或3.3。

于 2013-01-26T13:15:23.533 回答