首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DXGI1.5 DuplicateOutput1失败,并显示DXGI_ERROR_UNSUPPORTED (0x887a0004)

DXGI1.5 DuplicateOutput1失败,并显示DXGI_ERROR_UNSUPPORTED (0x887a0004)
EN

Stack Overflow用户
提问于 2018-01-11 20:57:48
回答 2查看 1.2K关注 0票数 2

由于某些原因,DuplicateOutput没有出现DuplicateOutput1失败的情况。

代码语言:javascript
复制
#include <D3D11.h>
#include <DXGI1_5.h>

int main() {
    ID3D11Device *device;
    D3D_FEATURE_LEVEL levels[] = { D3D_FEATURE_LEVEL_11_1 };
    D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, levels, ARRAYSIZE(levels), D3D11_SDK_VERSION, &device, NULL, NULL);

    IDXGIDevice *dxDevice;
    device->QueryInterface<IDXGIDevice>(&dxDevice);

    IDXGIAdapter *adapter;
    dxDevice->GetAdapter(&adapter);

    IDXGIOutput *output;
    adapter->EnumOutputs(0, &output);

    IDXGIOutput5 *output5;
    output->QueryInterface<IDXGIOutput5>(&output5);

    IDXGIOutputDuplication *outputDuplication;
    auto hr1 = output5->DuplicateOutput(device, &outputDuplication);

S_OK在这里

代码语言:javascript
复制
    const DXGI_FORMAT formats[] = { DXGI_FORMAT_B8G8R8A8_UNORM };
    auto hr2 = output5->DuplicateOutput1(device, 0, ARRAYSIZE(formats), formats, &outputDuplication);
}

0x887a0004 :此系统不支持指定的设备接口或功能级别。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-05 03:21:43

我会在这里发布@weggo的答案,因为我差一点就错过了!

对于那些将来可能会遇到这种情况的人来说,调用SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)可以让DuplicateOutput1成功。不过,我不知道为什么DuplicateOutput1会检查进程dpi版本。

我要补充的是,您必须在清单设置中解决方案的属性中将DPI感知设置为False,才能使SetProcessDpiAwarenessContext工作:)

票数 1
EN

Stack Overflow用户

发布于 2019-01-15 18:15:27

如果您在同时具有集成显卡芯片和独立GPU的系统上运行,则可能会发生这种情况。请参阅https://support.microsoft.com/en-us/kb/3019314

不幸的是,此问题的发生是因为桌面复制应用程序接口不支持在微软混合系统上针对独立GPU运行。按照设计,在这种情况下,调用会失败,同时会出现错误代码DXGI_ERROR_UNSUPPORTED。

要解决此问题,请在集成的图形处理器上运行应用程序,而不是在微软混合系统的独立图形处理器上运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48207677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档