1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 6 #define WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 7 8 #include "base/basictypes.h" 9 10 #include <windows.ui.core.h> 11 #include <windows.foundation.h> 12 #include <d3d11_1.h> 13 14 namespace metro_driver { 15 16 // We need to initalize a Direct3D device and swapchain so that the browser 17 // can Present to our HWND. This class takes care of creating and keeping the 18 // swapchain up to date. 19 class Direct3DHelper { 20 public: 21 Direct3DHelper(); 22 ~Direct3DHelper(); 23 24 void Initialize(winui::Core::ICoreWindow* window); 25 26 private: 27 void CreateDeviceResources(); 28 void CreateWindowSizeDependentResources(); 29 30 winui::Core::ICoreWindow* window_; 31 32 mswr::ComPtr<ID3D11Device1> d3d_device_; 33 mswr::ComPtr<ID3D11DeviceContext1> d3d_context_; 34 mswr::ComPtr<IDXGISwapChain1> swap_chain_; 35 D3D_FEATURE_LEVEL feature_level_; 36 37 ABI::Windows::Foundation::Rect window_bounds_; 38 39 DISALLOW_COPY_AND_ASSIGN(Direct3DHelper); 40 }; 41 42 } // namespace metro_driver 43 44 #endif // WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 45