gpt4 book ai didi

opengl - SetPixelFormat() 中的 PIXELFORMATDESCRIPTOR 参数是做什么用的?

转载 作者:行者123 更新时间:2023-12-04 02:23:45 25 4
gpt4 key购买 nike

通常在设置 OpenGL 上下文时,我只需使用必要的信息填写 PIXELFORMATDESCRIPTOR 结构并调用 ChoosePixelFormat(),然后使用从 ChoosePixelFormat() 返回的匹配像素格式调用 SetPixelFormat()。然后我只是简单地传递了初始描述符,而没有过多考虑原因。

但是现在我使用 wglChoosePixelFormatARB() 而不是 ChoosePixelFormat(),因为我需要一些扩展的特征,比如 sRGB 和多重采样。它采用整数的属性列表,就像 Linux 上的 XLib/GLX 一样,而不是 PIXELFORMATDESCRIPTOR 结构。那么,我真的必须填写一个描述符供 SetPixelFormat() 使用吗?当 SetPixelFormat() 已经具有像素格式描述符索引时,它使用描述符做什么?为什么我必须在两个不同的地方指定相同的 pixelformat 属性?哪个优先; wglChoosePixelFormatARB() 的属性列表,还是传递给 SetPixelFormat() 的 PIXELFORMATDESCRIPTOR 属性?

以下是函数原型(prototype),以使问题更清楚:

/* Finds a best match based on a PIXELFORMATDESCRIPTOR,
and returns the pixelformat index */
int ChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd);

/* Finds a best match based on an attribute list of integers and floats,
and returns a list of indices of matches, with the best matches at the head.
Also supports extended pixelformat traits like sRGB color space,
floating-point framebuffers and multisampling. */
BOOL wglChoosePixelFormatARB(HDC hdc, const int *piAttribIList,
const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats,
UINT *nNumFormats
);

/* Sets the pixelformat based on the pixelformat index */
BOOL SetPixelFormat(HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd);

编辑: MSDN关于 SetPixelFormat() 参数的说明:

Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The system's metafile component uses this structure to record the logical pixel format specification. The structure has no other effect upon the behavior of the SetPixelFormat function.



但我不知道这意味着什么,或者它与我的问题有什么关系。

最佳答案

我相信您不必使用 PIXELFORMATDESCRIPTOR 和 ChoosePixelFormat,只需使用 wglChoosePixelFormatARB 并将返回的 int 设置为像素格式。这些函数仅用于查询窗口以匹配像素格式,SetPixelFormat 函数不知道您使用哪个函数来获得所需的像素格式。

以下讨论的结论:

我查看了 Wine 的 opengl 实现,他们完全忽略了该参数.. ( internal_SetPixelFormat ),但谁知道 ms 用它做什么,我看到的唯一安全方法是使用 wglChoosePixelFormatARB 函数查找像素格式,然后使用 DescribePixelFormat 填充在您传递回 SetPixelFormat 的结构中。

关于opengl - SetPixelFormat() 中的 PIXELFORMATDESCRIPTOR 参数是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com