如何调用wglChoosePixelFormatARB()之后如何设置窗口的像素格式?

问题描述 投票:-1回答:1

我对于在创建OpenGL上下文之前以及使用相当于ChoosePixelFormat函数的wgl之后如何设置窗口的像素格式感到困惑。据我所知:

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函数仍需要SetPixelFormat结构作为参数,该结构与PIXELFORMATDESCRIPTOR拥有相同的信息。

这是否意味着我需要在attribute_list[]旁边创建PIXELFORMATDESCRIPTOR作为Wiki的隐含含义,还是存在我不知道的相当于attribute_list[]的wgl?如果第一个选项为true,那么仍然使用SetPixelFormat有什么意义?

c winapi opengl window
1个回答
0
投票

事实证明,由于某些原因,wglChoosePixelFormatARBSetPixelFormat()结构没有重要的作用,因此您可以给它PIXELFORMATDESCRIPTOR代替,它将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.