我想從我的dx12app中調用IDXGIDevice1 :: SetMaximumFrameLatency方法,因爲我需要從當前Direct3D 12設備獲取有效的IDXGIDevice1。查詢接口返回E_NOINTERFACE:無法從dx12中的ID3D12Device獲取IDXGIDevice或IDXGIDevice1
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」用於可等待的交換鏈。 –