DxgiAPI.h
 1  #pragma once
 2  #include <d2d1_3.h>
 3  #include <d3d11_4.h>
 4  #include <dcomp.h>
 5  #include <dxgi1_3.h>
 6  #include <inspectable.h>
 7  
 8  // Suppressing 26466 - Don't use static_cast downcasts - in base.h
 9  #pragma warning(push)
10  #pragma warning(disable : 26466)
11  #include <winrt/base.h>
12  #pragma warning(pop)
13  
14  
15  struct DxgiWindowState
16  {
17      winrt::com_ptr<ID2D1RenderTarget> rt;
18      winrt::com_ptr<IDXGISwapChain1> swapChain;
19      winrt::com_ptr<IDCompositionTarget> compositionTarget;
20  };
21  
22  struct DxgiAPI final
23  {
24      struct D3D
25      {
26          winrt::com_ptr<ID3D11Device> d3dDevice;
27          winrt::com_ptr<IDXGIDevice> dxgiDevice;
28          winrt::com_ptr<IInspectable> d3dDeviceInspectable;
29          winrt::com_ptr<IDXGIFactory2> dxgiFactory2;
30          winrt::com_ptr<ID3D11DeviceContext> d3dContext;
31      };
32  
33      winrt::com_ptr<ID2D1Factory2> d2dFactory2;
34      winrt::com_ptr<IDWriteFactory> writeFactory;
35  
36      winrt::com_ptr<ID3D11Device> d3dDevice;
37      winrt::com_ptr<IDXGIDevice> dxgiDevice;
38      winrt::com_ptr<IInspectable> d3dDeviceInspectable;
39      winrt::com_ptr<IDXGIFactory2> dxgiFactory2;
40      winrt::com_ptr<ID3D11DeviceContext> d3dContext;
41  
42      D3D d3dForCapture;
43  
44      winrt::com_ptr<ID2D1Device1> d2dDevice1;
45      winrt::com_ptr<IDCompositionDevice> compositionDevice;
46  
47      DxgiAPI();
48  
49      enum class Uninitialized
50      {
51      };
52      explicit inline DxgiAPI(Uninitialized) {}
53  
54      DxgiWindowState CreateD2D1RenderTarget(HWND window) const;
55  };