В рендере, который я проектирую в 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
Вы используете UUID из IDXGIAdapter
когда вы запрашиваете IDXGIFactory
:
IDXGIFactory * factory;
HR(adapter->GetParent(__uuidof(IDXGIAdapter), (void**)&factory));
Попробуйте изменить это на _uuidof(IDXGIFactory)
,
Других решений пока нет …