winapi – 获取运行OpenGL的子窗口的截图(Windows)

前端之家收集整理的这篇文章主要介绍了winapi – 获取运行OpenGL的子窗口的截图(Windows)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带孩子的主窗户.我需要以编程方式截取屏幕截图以在我的主窗口上裁剪并绘制它们.我这样做的方式是:
HDC hDC = GetWindowDC(hWnd);
HDC memDC = CreateCompatibleDC(hDC);
HBITMAP memBM = CreateCompatibleBitmap(hDC,Width,Height);
HBITMAP OldBM = (HBITMAP)::SelectObject(memDC,memBM );
BitBlt(memDC,Height,hDC,BEGINX,BEGINY,SRCCOPY);
int Bpp = GetDeviceCaps(hDC,BITSPIXEL);
int size = Bpp/8 * ( Width * Height );
BYTE *lpBits = new BYTE[size];
GetBitmapBits(memBM,size,lpBits);

但这并没有捕获子窗口的OpenGL部分,而只是在OGL渲染应该是的区域中绘制空白.

我记得几年前当我试图屏幕抓取一个视频并且只是获得视频的黑色区域时,我遇到了类似的问题.通过减少视频驱动程序上的硬件加速设置(在XP上:右键单击桌面>属性>设置>高级>疑难解答)来解决它.

对于基于代码解决方案,您可能需要参考以下的帖子:

Blank Screenshots In Vista and Win7 when gaming

Saving a screenshot of a window using C#,WPF,and DWM

原文链接:https://www.f2er.com/windows/371722.html

猜你在找的Windows相关文章