- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 AcquireNextFrame
来截取我的桌面。是否可以在设置中设置我想要的输出图像的尺寸?我在文档中看到这个函数 IDXGIOutput::SetDisplaySurface
可以提供帮助。这是我的代码:
//Here I init a output texture with less resolution
D3D11_TEXTURE2D_DESC desc;
desc.Width = 1280;
desc.Height = 720;
desc.MipLevels = desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
desc.SampleDesc.Count = 1;
desc.Usage = D3D11_USAGE_DYNAMIC;
desc.BindFlags = 0;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
desc.MiscFlags = 0;
ID3D11Texture2D *pTexture = NULL;
gDevice->CreateTexture2D(&desc, NULL, &pTexture);
IDXGISurface *surface = nullptr;
hr = gDevice->QueryInterface(__uuidof(IDXGISurface), reinterpret_cast<void **>(&pTexture));
if (FAILED(hr))
return;
// Here I should make lDxgiOutput->setDisplaySurface(surface)
hr = lDxgiOutput->GetDesc(&gOutputDesc);
if (FAILED(hr))
return;
IDXGIOutput1 *lDxgiOutput1 = nullptr;
hr = lDxgiOutput->QueryInterface(IID_PPV_ARGS(&lDxgiOutput1));
if (FAILED(hr))
return;
lDxgiOutput->Release();
hr = lDxgiOutput1->DuplicateOutput(gDevice, &gDeskDupl);
if (FAILED(hr))
return;
我的屏幕是 1920x1080,例如我想获取 1280x720 的图像。我在 queryinterface
函数上遇到错误。有人可以告诉我我错过了什么吗?或者是否有任何解决方案可以更轻松地自定义分辨率?谢谢
最佳答案
Desktop Duplication API 以最少的开销为您提供桌面拷贝作为纹理。也就是说,不包括缩放。您可以抓取帧并按您的意愿缩小它们,但这不是 Desktop Duplication 为您做的或期望为您做的。
这个问题提出了几种方法(这个问题也与桌面复制有关):
此外,您可以使用 Media Foundation 的 Video Processor MFT ,如果您不以其他方式使用 Media Foundation,但使用 Direct3D 11 以高效的性能方式正确设置比例,则它有点不灵活并且可能具有不便的外形。
另请参阅另一个用于支持 GPU 缩放的相关 API:
关于c++ - 自定义输出分辨率 DuplicateOutput DXGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325283/
我正在使用 AcquireNextFrame 来截取我的桌面。是否可以在设置中设置我想要的输出图像的尺寸?我在文档中看到这个函数 IDXGIOutput::SetDisplaySurface 可以提供
我一直在尝试制作一个利用桌面复制 api 的应用程序,但没有使用 directx 的经验,结果证明这是一个相当大的挑战。似乎一切正常,直到我调用 output1->DuplicateOutput(),
我是一名优秀的程序员,十分优秀!