获取 window 的像素格式
Getting a window's pixel format
我在 Windows 上创建了一个 OpenGL 应用程序 运行。有什么方法可以查询有关我当前渲染的像素格式的信息 window?
(window 是使用 GLFW 库创建的)
我感兴趣的:
- 色位
- 深度位
- 像素类型
- 等等
在 GLFW doc 中,您可以直接阅读有关使用 OpenGL API 的信息,例如 glGetFramebufferAttachmentParameteriv
或 glGetIntegerv
。
您可以调用 glfwGetWin32Window 函数(来自 glfw3native.h)并检索 window 的句柄。
获取HDC表单句柄(使用GetDC(window_handle)函数)然后将这个HDC传递给GetPixelFormat函数并调用DescribePixelFormat。
在此处查看 GetPixelFormat + DescribePixelFormat 的用法示例:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd318349(v=vs.85).aspx
我是这样做的:
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
是您的应用程序的句柄 window。如果您可以直接访问 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
结构中还有更多内容,例如移位、掩码等,只需检查它并打印您需要的内容即可。
我在 Windows 上创建了一个 OpenGL 应用程序 运行。有什么方法可以查询有关我当前渲染的像素格式的信息 window? (window 是使用 GLFW 库创建的)
我感兴趣的:
- 色位
- 深度位
- 像素类型
- 等等
在 GLFW doc 中,您可以直接阅读有关使用 OpenGL API 的信息,例如 glGetFramebufferAttachmentParameteriv
或 glGetIntegerv
。
您可以调用 glfwGetWin32Window 函数(来自 glfw3native.h)并检索 window 的句柄。
获取HDC表单句柄(使用GetDC(window_handle)函数)然后将这个HDC传递给GetPixelFormat函数并调用DescribePixelFormat。
在此处查看 GetPixelFormat + DescribePixelFormat 的用法示例: https://msdn.microsoft.com/en-us/library/windows/desktop/dd318349(v=vs.85).aspx
我是这样做的:
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
是您的应用程序的句柄 window。如果您可以直接访问 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
结构中还有更多内容,例如移位、掩码等,只需检查它并打印您需要的内容即可。