ich hab mal in meinem aktuellen projekt das probiert
Delphi-Quellcode:
{ working with D3D11.1 }
Result := FD3D11Device.QueryInterface(ID3D11Device1, FD3D11Device1);
if (FAILED(Result)) then
Exit;
Result := FDeviceContext.QueryInterface(ID3D11DeviceContext1, FD3DContext1);
if (FAILED(Result)) then
Exit;
{ try some new stuff }
Result := FD3D11Device.QueryInterface(IDXGIDevice2, pDXGIDevice);
Result := pDXGIDevice.GetParent(IDXGIAdapter, pDXGIAdapter);
pDXGIAdapter.GetParent(IDXGIFactory1, pIDXGIFactory);
damit hab ich für die pIDXGIFactory zumindest mal einen gültigen Zeiger bekommen. Ansonsten fehlt mir momentan der Anwendungsfall
und bei Deinem Bsp zu ändern auf
Delphi-Quellcode:
Result := Result and Succeeded(FDXGIDevice1.GetAdapter(LDXGIAdapter));
Result := Result and Succeeded(LDXGIAdapter.GetParent(IDXGIFactory2, LDXGIFactory2));
Result := Result and Succeeded(LDXGIFactory2.CreateSwapChain(FD3DDevice1, GetSwapChainDescriptor, FSwapChain));
Result := Result and Succeeded(FDXGIDevice1.SetMaximumFrameLatency(1));
geht.