Как установить пиксельный формат окна после вызова wglChoosePixelFormatARB ()? - PullRequest
0 голосов
/ 29 октября 2019

Я не совсем понимаю, как установить пиксельный формат окна перед созданием контекста OpenGL и после использования wgl-эквивалента функции ChoosePixelFormat. Насколько я знаю это:

int pixel_format = 0;
PIXELFORMATDESCRIPTOR pixel_format_descriptor = {
    sizeof(PIXELFORMATDESCRIPTOR),
    1,
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
    32,
    0,
    0, 0, 0, 0, 0, 0,
    0, 0,
    0, 0, 0, 0, 0,
    24,
    8,
    0,
    PFD_MAIN_PLANE,
    0,
    0, 0, 0
};
pixel_format = ChoosePixelFormat(device_context, &pixel_format_descriptor);

Должно быть аналогично этому:

int pixel_format = 0;
unsigned int format_number = 0;
const int attribute_list[] = {
    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, 32,
    WGL_DEPTH_BITS_ARB, 24,
    WGL_STENCIL_BITS_ARB, 8,
    0
};
wglChoosePixelFormatARB(device_context, attribute_list, NULL, 1, &pixel_format, &format_number);

Согласно OpenGL wiki"Как только у вас есть формат пикселячисло, вы можете установить его так же, как любой пиксельный формат с SetPixelFormat ". Дело в том, что SetPixelFormat функция по-прежнему требует PIXELFORMATDESCRIPTOR struct в качестве аргумента, который содержит ту же информацию, что и attribute_list[].

Означает ли это, что мне нужно создать PIXELFORMATDESCRIPTORнаряду с attribute_list[], как подразумевает вики, или существует ли wgl, эквивалентный SetPixelFormat, о котором я не знаю? Если первый вариант верен, то какой смысл использовать wglChoosePixelFormatARB в любом случае?

1 Ответ

0 голосов
/ 31 октября 2019

Оказывается, по какой-то причине SetPixelFormat() ничего не делает со структурой PIXELFORMATDESCRIPTOR, поэтому вы можете просто дать ей NULL, и она будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...