【问题标题】:IDXGIFactory::CreateSwapChain() returns E_NOINTERFACE?IDXGIFactory::CreateSwapChain() 返回 E_NOINTERFACE?
【发布时间】:2013-03-29 00:05:13
【问题描述】:

在我使用 DirectX11 设计的渲染器中,我需要能够随时创建交换链,但是我使用的方法在 CreateSwapChain() 调用时崩溃:

    IDXGIDevice * device;
    HR(d3ddevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&device));

    IDXGIAdapter * adapter;
    HR(device->GetParent(__uuidof(IDXGIAdapter), (void**)&adapter));

    IDXGIFactory * factory;
    HR(adapter->GetParent(__uuidof(IDXGIAdapter), (void**)&factory));

    IDXGISwapChain* swapChain = 0;
    HR(factory->CreateSwapChain(_device->GetContent(), &description, &swapChain));

d3ddevice 是一个指向 ID3D11Device 的指针,完全初始化了,我测试了它。 description是一个DXGI_SWAP_CHAIN_DESC结构,每个字段都填写。但是函数返回E_NOINTERFACE。我的系统支持shader model 5/directx 11

【问题讨论】:

    标签: c++ com directx-11 hresult


    【解决方案1】:

    当您查询IDXGIFactory 时,您使用的是IDXGIAdapter 的UUID:

    IDXGIFactory * factory;
    HR(adapter->GetParent(__uuidof(IDXGIAdapter), (void**)&factory));
    

    尝试将其更改为 _uuidof(IDXGIFactory)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-15
      • 2021-08-17
      • 2021-08-22
      • 2016-07-10
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2019-04-10
      相关资源
      最近更新 更多