This question already has an answer here:
What is the PIXELFORMATDESCRIPTOR parameter in SetPixelFormat() used for?
(1个答案)
3年前关闭。
在Windows上创建OpenGL上下文之前,我们需要为Windows的设备上下文调用
在创建固定函数上下文时,我们通过使用所需的像素格式调用
即使
我将第三个参数传递给
(1个答案)
3年前关闭。
在Windows上创建OpenGL上下文之前,我们需要为Windows的设备上下文调用
SetPixelFormat
。其功能原型(prototype)如下:BOOL WINAPI SetPixelFormat(
HDC hdc,
int iPixelFormat,
const PIXELFORMATDESCRIPTOR *ppfd);
在创建固定函数上下文时,我们通过使用所需的像素格式调用
ChoosePixelFormat
来获得受支持的像素格式索引,因此真正重要的值是作为iPixelFormat
参数传递的值。在创建现代GL上下文时,我们仍然需要调用SetPixelFormat
according to the docs即使
PIXELFORMATDESCRIPTOR
结构并不真正相关。在这种情况下,我只是传递了NULL
。我将第三个参数传递给
SetPixelFormat
无关紧要吗?如果是这样,什么时候? 最佳答案
是的,不是。 PFD结构主要用于ChoosePixelFormat
,除非您当然使用wglChoosePixelFormatARB
。据我所知,SetPixelFormat
依赖于iPixelFormat
,换句话说,传递PFD结构只是一个不错的“额外”或元数据。
SetPixelFormat
文档有点神秘,但实际上确实提到了这一点:
因此,首先您要设置PFD并定义您的像素格式要求。然后调用ChoosePixelFormat
可以找到匹配的像素格式并返回索引。然后,调用SetPixelFormat
将使用索引的这种像素格式应用于设备上下文。与SetPixelFormat
相关的PFD只是元数据。
总之,为了安全起见,我建议无论如何都要通过它。
08-16 21:30