自定义输出分辨率重复输出DXGI
Custom output resolution DuplicateOutput DXGI
我正在使用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
功能上遇到了错误。有人可以告诉我我想念什么吗?还是有任何解决方案可以更轻松地自定义分辨率?谢谢
桌面重复API为您提供桌面的副本,作为质地最少的纹理。也就是说,不包括缩放。您可以抓住框架并根据需要将它们缩小,但这不是桌面重复或期望为您做的。
这个问题提出了几种方法(问题也与桌面复制有关(:
- 调整SharpDx中的DXGI资源或纹理2D
此外,您可以使用Media Foundation的视频处理器MFT,如果您不使用Media Foundation,则可以使用媒体基金会,但可能会出现不方便的外形,但可以通过Direct3d 11以有效的方式使用Direct3D 11进行适当设置量表。
另请参见有关启用GPU的缩放的另一个相关API:
- DXVA视频处理 - 示例7:伸展和裁剪视频
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 自定义输出分辨率重复输出DXGI