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

发布时间:2020-02-08 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了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

总结

以上是脚本之家为你收集整理的winapi – 获取运行OpenGL的子窗口的截图(Windows)全部内容,希望文章能够帮你解决winapi – 获取运行OpenGL的子窗口的截图(Windows)所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

标签: