gpt4 book ai didi

c++ - 检索要通过网络发送的 ID3D11Texture2D 数据

转载 作者:可可西里 更新时间:2023-11-01 09:19:36 26 4
gpt4 key购买 nike

我正在修改桌面复制 api 示例 kindly provided by Microsoft捕获屏幕并通过网络将更新发送到我的应用程序。我知道如何实际发送数据;我的问题是从 ID3D11Texture2D 对象获取数据。

ID3D11Texture2D* m_AcquiredDesktopImage;
IDXGIResource* desktopResource = nullptr;
DXGI_OUTDUPL_FRAME_INFO FrameInfo;

// Get new frame
HRESULT hr = m_DeskDupl->AcquireNextFrame(500, &FrameInfo, &desktopResource);

// QI for IDXGIResource
hr = desktopResource->QueryInterface(__uuidof(ID3D11Texture2D), reinterpret_cast<void **>(&m_AcquiredDesktopImage));

此时,我认为屏幕更新在 m_AcquiredDesktopImage 中。我需要通过网络传输这些数据(尽可能高效)。

This answer似乎是在正确的轨道上,但我是 Windows 编程的新手,所以我需要一些额外的帮助。

这是我能想到的唯一使用 IDXGIObject::GetPrivateData 的解决方案

最佳答案

私有(private)数据根本不是您要找的。它们只是在这里将自定义值附加到 d3d 对象。

一旦有了需要从中读回图像的 ID3D11Texture2D 对象,就需要在 ID3D11Device 的暂存内存池中创建第二个对象(获取原始描述,更改池并删除绑定(bind))。

然后,您需要使用 ID3D11DeviceContext 使用 CopyResource 将纹理复制到暂存设备。然后您可以使用上下文 MapUnmap api 来读取图像。

关于c++ - 检索要通过网络发送的 ID3D11Texture2D 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38165270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com