所以我试图通过将它加载到CDC并绘制到它上来创建一个CBitmap。
程序开始的某个地方(这是我们制作m_hGLRC的地方)
CDC *dc = GetDCEx(NULL, DCX_CACHE);
HGLRC m_hGLRC = wglCreateContext(dc->m_hDC);
我们的常规工作CView Draw
CPaintDC pDC(someCView);
bResult = wglMakeCurrent(pDC.m_hDC, m_hGLRC);
bResult总是如此,我们开始吸引这个CPaintDC。
我尝试做什么。
CClientDC cliDC(sameCViewAsAbove);
CDC dcMem;
dcMem.CreateCompatibleDC(cliDC); // This returns true. everything looks good.
bResult = wglMakeCurrent(dcMem.m_hDC, m_hGLRC);
if(!bResult)
{
int err = GetLastError(); // I hit this and err == 2000(ERROR_INVALID_PIXEL_FORMAT)
}
wglMakeCurrent返回False,错误== ERROR_INVALID_PIXEL_FORMAT ... 我想到了dcMem.CreateCompatibleDC(someClientDC); someClientDC是在同一个CView中创建的,我们总是用来绘制它会创建一个实际兼容的DC。
我尝试使用CPaintDC而不是CClientDc,结果相同。
注意:这很好用......没有错误。
CClientDC cliDC(sameCViewAsAbove);
bResult = wglMakeCurrent(cliDC.m_hDC, m_hGLRC);
因此,如果我的dcMem是从cliDc创建的,并且cliDC兼容,为什么dcMem不起作用?