SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?
What is the point of the third parameter in SetPixelFormat() for OpenGL context creation?
在Windows上创建OpenGL上下文之前,我们需要为Windows的设备上下文调用SetPixelFormat
。其功能原型如下:
BOOL WINAPI SetPixelFormat(
HDC hdc,
int iPixelFormat,
const PIXELFORMATDESCRIPTOR *ppfd);
在创建固定函数上下文时,我们通过使用所需的像素格式调用ChoosePixelFormat
来获得支持的像素格式索引,因此真正重要的值是作为iPixelFormat
参数传递的值。在创建现代 GL 上下文时,我们仍然需要根据文档调用SetPixelFormat
"一旦你有了像素格式编号,你就可以像任何像素格式一样设置它
SetPixelFormat
。">
即使PIXELFORMATDESCRIPTOR
结构并不真正相关,也是如此。在这种情况下,我刚刚通过了NULL
.
我作为第三个参数传递给SetPixelFormat
有什么关系吗?如果是,什么时候?
嗯,是也不是。PFD结构主要用于ChoosePixelFormat
,除非你当然使用wglChoosePixelFormatARB
。据我所知,SetPixelFormat
依赖于iPixelFormat
,换句话说,传递 PFD 结构只是一个不错的"额外"或元数据。
SetPixelFormat
文档有点晦涩难懂,但实际上提到了这一点:
指向包含逻辑像素格式规范的
PIXELFORMATDESCRIPTOR
结构的指针。系统的图元文件组件使用此结构来记录逻辑像素格式规范。该结构对SetPixelFormat
函数的行为没有其他影响。
因此,首先要设置PFD并定义像素格式所需的内容。然后调用ChoosePixelFormat
查找匹配的像素格式并返回索引。然后,调用SetPixelFormat
将使用索引将此像素格式应用于设备上下文。与SetPixelFormat
相关的PFD只是元数据。
总而言之,为了安全起见,我还是建议通过它。
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- Adobe Acrobat插件-在上下文菜单中创建子菜单项
- 由于某种原因,我无法创建 GLFW 上下文
- Zmq 上下文 - 我应该在新线程中创建另一个上下文吗?
- 如何创建一个版本的 boost::range::transform,该版本具有用于捕获上下文的额外参数
- lib OSMesa 屏幕外上下文创建在C++中失败,但仅在静态链接时失败
- 使用 GLUT/FreeGLUT 创建核心上下文?
- C++:如何创建一个临时对象,包含一个指针 - 常量或非常量,具体取决于上下文
- SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?
- 在新计算机上,ZMQ上下文套接字创建要慢得多
- Linux/QT-错误创建SSL上下文(错误:140A90C4 ..)
- 电子内部或外部方法创建自己的右键单击上下文菜单 - Windows
- 从cl_context创建 OpenCL 上下文,而无需获得所有权
- 无法使用外部QOpenGLWidget创建的上下文
- 使用WGL创建现代OpenGL上下文
- 在 Mac OS X 10.9 中使用 GLFW 创建 OpenGL 3.3 上下文
- SDL_net没有创建OpenGL上下文
- GLFW 无法创建 4.3 上下文
- 设备表示它可用,但无法在 OpenCL 中创建上下文
- 如何在列表框上右键创建上下文菜单