Вы не установили формат пикселей.
Просмотрите документацию здесь .
Вы должны объявить дескриптор формата пикселей, например:
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, // Flags
PFD_TYPE_RGBA, // The kind of framebuffer. RGBA or palette.
32, // Colordepth of the framebuffer.
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
24, // Number of bits for the depthbuffer
8, // Number of bits for the stencilbuffer
0, // Number of Aux buffers in the framebuffer.
PFD_MAIN_PLANE,
0,
0, 0, 0
};
Затем используйте ChoosePixelFormat , чтобы получить номер формата пикселя, например:
int iPixelFormat = ChoosePixelFormat(hdc, &pfd);
и, наконец, вызовите функцию SetPixelFormat , чтобы установитьправильный формат пикселей, например:
SetPixelFormat(hdc, iPixelFormat, &pfd);
Только тогда вы можете вызвать функцию wglCreateContext .
UPDATE
Как указал пользователь Крис Бекке , нельзя вызвать SetPixelFormat на экране hDC (полученного с помощью GetDC (NULL) согласно коду OP).Об этом также говорится в вики khronos здесь .
Поэтому вы также должны создать свое собственное окно, получить его DC, а затем использовать его для установки формата пикселей и создания контекста GL.Если вы хотите сделать «полноэкранный режим», вам просто нужно создать окно без полей с тем же размером экрана.Я предлагаю взглянуть на ответы на этот старый вопрос здесь, на ТАК по этому вопросу.