我对于在创建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
函数仍然需要PIXELFORMATDESCRIPTOR
结构作为参数,该结构保存与attribute_list[]
相同的信息。这是否意味着我需要在
PIXELFORMATDESCRIPTOR
旁边创建attribute_list[]
作为Wiki隐含的含义,还是存在我不知道的与SetPixelFormat
等效的wgl?如果第一个选项为true,那么使用wglChoosePixelFormatARB
到底有什么意义? 最佳答案
事实证明,由于某种原因,SetPixelFormat()
对PIXELFORMATDESCRIPTOR
结构没有什么重要的意义,因此您可以给它NULL
代替,它将起作用。
关于c - 调用wglChoosePixelFormatARB()后如何设置窗口的像素格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58606950/