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

我感兴趣的是:

  • 颜色位
  • 深度位
  • 像素类型
  • 最佳答案

    我这样做是这样的:

    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结构中还有更多内容,例如移位,掩码等,只需对其进行检查并打印所需的内容即可。

    10-08 17:04