Я хотел бы вызвать метод IDXGIDevice1 :: SetMaximumFrameLatency из моего dx12app, для этого мне нужно получить действительный IDXGIDevice1 с текущего устройства Direct3D 12. запрашивая интерфейс возвращает E_NOINTERFACE:не может приобрести IDXGIDevice или IDXGIDevice1 из ID3D12Device в dx12
IDXGIDevice * pDXGIDevice;
HRESULT hr = myDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice);
assert(hr != S_OK); // returns E_NOINTERFACE
IDXGIDevice1 * pDXGIDevice1;
HRESULT hr1 = myDevice->QueryInterface(__uuidof(IDXGIDevice1), (void **)&pDXGIDevice1);
assert(hr != S_OK); // returns E_NOINTERFACE
Не уверен, что если я что-то отсутствует или есть последовательность DXGI логики мне нужно реализовать, чтобы получить правильный интерфейс IDXGIDevice1.
Поблагодарили бы любые подсказки & заранее! Klip
Спасибо за ответ Чак. Я уже использую явно созданный завод, 'CreateDXGIFactory1 (__ uuidof (IDXGIFactory4), & dxgiFactory)' затем сканируйте адаптеры DXGI, чтобы найти тот, который поддерживает Direct3D 12, а затем создайте устройство, подобное описанным в вашем блоге. 'D3D12CreateDevice (myAdapter, D3D_FEATURE_LEVEL_11_0, __uuidof (ID3D12Device), и MyDevice)' Так что, если я не понял ваш ответ, я до сих пор не знаю, почему я не могу получить IDXGIDevice1. Мое понимание латентности кадров - это значение, равное <=, чем количество буферов цепи обмена, чтобы ограничить текущую очередь драйвера –
Вместо этого вы можете использовать '' IDXGISwapChain2 :: SetMaximumFrameLatency''. –
Обратите внимание, что вы можете использовать '' IDXGISwapChain2 :: SetMaximumFrameLatency' для только доступных swapchains. –