首页 > 解决方案 > 获取窗口的像素格式

问题描述

我创建了一个在 Windows 上运行的 OpenGL 应用程序。有什么方法可以查询当前渲染窗口的像素格式信息吗?(该窗口是使用 GLFW 库创建的)

我感兴趣的是:

标签: c++windowsopenglglfw

解决方案


我这样做:

int i;
HDC hdc;
PIXELFORMATDESCRIPTOR pfd;
hdc = GetDC(window_handle);                     // get device context
i=GetPixelFormat(hdc);                          // pixel format descriptor index
DescribePixelFormat(hdc,i,sizeof(pfd),&pfd);    // format from index

window_handle您的应用程序窗口的句柄在哪里。如果您可以直接访问,则hdc可以跳过第一行GetDC。这就是我使用VCL和我的GL引擎打印信息的方式:

scr.text(AnsiString().sprintf("color: %i bit R%i G%i B%i A%i",pfd.cColorBits,pfd.cRedBits,pfd.cGreenBits,pfd.cBlueBits,pfd.cAlphaBits));
scr.text(AnsiString().sprintf("accum: %i",pfd.cAccumBits));
scr.text(AnsiString().sprintf("depth: %i",pfd.cDepthBits));
scr.text(AnsiString().sprintf("stenc: %i",pfd.cStencilBits));
scr.text(AnsiString().sprintf("auxil: %i",pfd.cAuxBuffers));

因此,只需使用您可以使用的文本打印即可。结构中还有更多内容,pfd例如位移,掩码等,只需检查它并打印您需要的内容即可。


推荐阅读