gpt4 book ai didi

c++ - DXGI EnumOutputs - 无 DXGI_OUTPUT_DESC 和空显示模式数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:02 24 4
gpt4 key购买 nike

刚刚在尝试获取可用的显示模式时遇到了一个奇怪的问题。让我解释一下...

首先,我枚举可用的适配器,然后推送到 std::vector,这工作正常:

for(UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i)
vAdapters->push_back(pAdapter);

然后我用这些适配器填充组合框并允许选择我想使用的一个。

当我尝试枚举输出并获得可用的显示模式时,首先我从组合框中获得选定的适配器:

IDXGIAdapter* pSelectedAdapter = (*vAdapters)[index];

我检查了所选适配器的地址,它与适配器枚举期间获得的地址匹配。

然后,尝试枚举输出并获取它们的描述:

IDXGIOutput* pOutput;
DXGI_OUTPUT_DESC *odesc = 0;
for(UINT i = 0; pSelectedAdapter->EnumOutputs(i, &pOutput) != DXGI_ERROR_NOT_FOUND; ++i)
{
pOutput->GetDesc(odesc);
}

问题来了。 Loop 找到我的两个监视器并为它们返回 pOutput 指针,但是当我尝试触发 GetDesc(odesc) 时,odesc 没有返回。看起来 pOutput 指针指向...空对象。枚举可用显示模式会导致 0 个可用模式,无论我想检查哪种后台缓冲区格式。

谢谢,帕特里克

最佳答案

当它需要一个指向 DXGI_OUTPUT_DESC 结构的指针时,您将一个空指针传递给 GetDesc。尝试以下:

IDXGIOutput* pOutput;
DXGI_OUTPUT_DESC odesc;
for(UINT i = 0; pSelectedAdapter->EnumOutputs(i, &pOutput) != DXGI_ERROR_NOT_FOUND; ++i)
{
pOutput->GetDesc(&odesc);
}

关于c++ - DXGI EnumOutputs - 无 DXGI_OUTPUT_DESC 和空显示模式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29877550/

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