对DXGI desktop duplication sample分析,改到MFC上

本文详细介绍了如何分析并移植DXGI Desktop Duplication Sample到MFC工程中,该技术是Windows 8及更高版本特有的桌面截图协作方案。主要内容包括理解示例代码结构,涉及多线程、DirectX 11相关对象的使用,以及关键函数DDProc的功能,如DISPLAYMANAGER和DUPLICATIONMANAGER类,ID3D11Texture2D和IDXGIKeyedMutex对象的创建和管理。文章还提供了错误处理和资源释放的步骤,并分享了移植后的DEMO下载链接。
摘要由CSDN通过智能技术生成

desktop duplication是一组WIN8以后才有的桌面截图的协作方案。功能在我看来就是截取桌面屏幕,微软给的示例要命,代码里面老喜欢判断返回值,写个程序贼稳,一来一回代码量就多了,一点不像是示例。再加上里面有各种各样的类、方法和多线程编程。让我一开始拿来的时候是懵笔的,本想直接取里面的函数实现功能而已,发现不是特别好分开,现在终于是搞清楚大概的结构了,本文只讲结构,不讲具体怎么实现的,

其中没加了后缀的是有头文件和源文件两个文件,没加的就只有后缀那个文件。

另外VertexShader.h,PixelShader.h这两个文件虽然没有显示在解决方案里,但是后面还是要用到,里面内容古怪,大概定义了什么结构,并不重要。

一一的说明下吧!

commonType.h定义了整个工程所用的库,头文件,以及必要的对象。

后面四个模块都包括commonType.h,并各自有着功能,后面分析函数在讲有什么功能。

主函数是函数入口,里面包括了注册创建窗体,调用其他类实现功能等。


程序大体思路如下图



这个程序用的directx11的一些东西,本人不了解,所以我也说不清具体细节,值得一说的也就DDProc这个函数,

WORD WINAPI DDProc(_In_ void* Param)
{
    // Classes
    DISPLAYMANAGER DispMgr;
    DUPLICATIONMANAGER DuplMgr;

    // D3D objects
    ID3D11Texture2D* SharedSurf = nullptr;
    IDXGIKeyedMutex* KeyMutex = nullptr;

    // Data passed in from thread creation
    THREAD_DATA* TData = reinterpret_cast<THREAD_DATA*>(Param);

    // Get desktop
    DUPL_RETURN Ret;
    HDESK CurrentDesktop = nullptr;
    CurrentDesk
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值