当我使用 SetPixelFormat 为 hDC 设置像素格式时,它返回 false。我使用了 GetLastError(),我得到一个错误代码 2000(表示无效的像素格式)。
代码如下:
// Set pixel format attributes
int pixelAttributes[] = {
WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_ARB,
WGL_COLOR_BITS_ARB, bits,
WGL_DEPTH_BITS_ARB, 24,
WGL_STENCIL_BITS_ARB, 8,
WGL_SAMPLE_BUFFERS_ARB, 1,
WGL_SAMPLES_ARB, 4,
0
};
int pixelFormat;
UINT numFormat;
// using wgl ext get valid pixel format number.
if (!wglChoosePixelFormatARB(hDC, pixelAttributes, NULL, 1, &pixelFormat, &numFormat)) {
KillGLWindow();
MessageBox(NULL, L"Get pixel format failed", L"Error", MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
if (!SetPixelFormat(hDC, pixelFormat, &pfd)) // try to set pixel format
{
auto x = GetLastError();
KillGLWindow(); // close
MessageBox(NULL, L"Unable to set pixel format.", L"Error", MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
这些代码是在创建并激活 FALSE openGL 上下文Create WGL之后。