带有hdc参数的wglMakeCurrent为NULL

时间:2018-02-11 04:30:01

标签: c winapi opengl wgl

根据此处注册的(khronos site):

  

如果< hglrc>的OpenGL上下文版本是3.0或以上,如果       要么< hdc> wglMakeCurrent的参数是NULL,或两者都是       < hDrawDC>和< hReadDC> wglMakeContextCurrentARB的参数是       NULL,然后将上下文设为当前,但没有默认值       帧缓冲定义。没有默认帧缓冲的效果       GL在OpenGL 3.0规范的第4章中定义。

相信这些信息,我创建了一个设备上下文" off screen"用:

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);

那不起作用。 retfalse,我收到此错误:

  

Win32错误#(6):ERROR_INVALID_HANDLE

0 个答案:

没有答案