2

根据此处注册(khronos 网站):

如果 <hglrc> 的 OpenGL 上下文版本是 3.0 或更高版本,并且如果 wglMakeCurrent 的 <hdc> 参数为 NULL,或者 wglMakeContextCurrentARB 的 <hDrawDC> 和 <hReadDC> 参数都为 NULL,则上下文为当前,但没有定义默认的帧缓冲区。GL 上没有默认帧缓冲区的影响在 OpenGL 3.0 规范的第 4 章中定义。

相信这些信息,我创建了一个“屏幕外”的设备上下文:

HDC m_hDC = CreateCompatibleDC(NULL);

我配置了像素并使用以下SetPixelFormat功能添加到 DC:

SetPixelFormat(m_hDC, iPixelFormat, &chosenPFD);

然后我创建了一个渲染上下文:

m_hGLRC = ::wglCreateContextAttribsARB(m_hDC, NULL, &(iAttributes[0]));

到目前为止一切顺利,它有效。现在是时候让上下文成为当前的了。

首先,我删除 DC(我不再需要它)并wglMakeCurrent使用NULL dc参数调用:

DeleteDC(m_hDC);
bool ret = wglMakeCurrent(NULL, m_hGLRC);

那没有用。ret是,我得到这个false错误:

Win32 错误# (6): ERROR_INVALID_HANDLE

4

0 回答 0