IDXGIDevice1 :: SetMaximumFrameLatency 메서드를 내 dx12app에서 호출하고 싶습니다. 현재 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
확실하지 내가 뭔가를 누락 또는 I 유효한 IDXGIDevice1 인터페이스를 얻기 위해 구현해야 DXGI 논리의 순서가있는 경우.
미리 감사드립니다. & 감사합니다. KLIP
는 첫 걸음으로 위의 코드가 작동하지 않도록 Direct3D를 (12), DXGI 공장을 얻는이 '기존의 패턴'에 대한
답장을 보내 주셔서 감사합니다. 는 이미 다음 블로그에 설명 된 단계와 유사한 장치를 만들고, Direct3D의 12을 지원하는 하나를 찾을 수 다음 스캔 DXGI 어댑터를 명시 적으로 생성 된 공장, 'CreateDXGIFactory1 (__ uuidof (IDXGIFactory4), dxgiFactory)를'사용합니다. 내가 귀하의 회신을 오해하지 않는 한 내가 IDXGIDevice1을 취득 할 수없는 이유 'D3D12CreateDevice (myAdapter, D3D_FEATURE_LEVEL_11_0, __uuidof (ID3D12Device), myDevice)은' 그래서, 난 아직 확실하지 않다. 프레임 대기 시간에 대한 나의 이해는 드라이버의 현재 큐를 제한하는 스왑 체인의 버퍼 수보다 작은 값입니다. –
대신에 "IDXGISwapChain2 :: SetMaximumFrameLatency'를 사용할 수 있습니다. –
대기 가능한 스왑 체인에만''IDXGISwapChain2 :: SetMaximumFrameLatency''를 사용할 수 있습니다. –