2013-03-29 88 views
0

在我設計中的DirectX11渲染我需要能夠在任何時候創建一個交換鏈,但是該方法我用崩潰就在CreateSwapChain()調用:IDXGIFactory :: CreateSwapChain()返回E_NOINTERFACE?

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,完全初始化和一切,我測試了出來。 描述是DXGI_SWAP_CHAIN_DESC結構,每個字段填out.However,該函數返回E_NOINTERFACE.My系統支持Shader Model 5/DirectX 11的

回答

4

您使用的IDXGIAdapter的UUID當您查詢IDXGIFactory

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

嘗試將其更改爲_uuidof(IDXGIFactory)

相關問題