IDXGIFactory :: CreateSwapChain () возвращает E_NOINTERFACE?

В рендере, который я проектирую в 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. Моя система поддерживает модель шейдера 5 / directx 11

0

Решение

Вы используете UUID из IDXGIAdapter когда вы запрашиваете IDXGIFactory:

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

Попробуйте изменить это на _uuidof(IDXGIFactory),

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]