【发布时间】:2017-11-03 15:35:51
【问题描述】:
我正在使用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 函数上遇到错误。
有人能告诉我我错过了什么吗?还是有任何解决方案可以更轻松地自定义分辨率?
谢谢
【问题讨论】:
标签: c++ directx screenshot screen-capture dxgi