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を作成してアクティブにした後です。