// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef WIN8_METRO_DRIVER_DIRECT3D_HELPER_ #define WIN8_METRO_DRIVER_DIRECT3D_HELPER_ #include "base/basictypes.h" #include <windows.ui.core.h> #include <windows.foundation.h> #include <d3d11_1.h> namespace metro_driver { // We need to initalize a Direct3D device and swapchain so that the browser // can Present to our HWND. This class takes care of creating and keeping the // swapchain up to date. class Direct3DHelper { public: Direct3DHelper(); ~Direct3DHelper(); void Initialize(winui::Core::ICoreWindow* window); private: void CreateDeviceResources(); void CreateWindowSizeDependentResources(); winui::Core::ICoreWindow* window_; mswr::ComPtr<ID3D11Device1> d3d_device_; mswr::ComPtr<ID3D11DeviceContext1> d3d_context_; mswr::ComPtr<IDXGISwapChain1> swap_chain_; D3D_FEATURE_LEVEL feature_level_; ABI::Windows::Foundation::Rect window_bounds_; DISALLOW_COPY_AND_ASSIGN(Direct3DHelper); }; } // namespace metro_driver #endif // WIN8_METRO_DRIVER_DIRECT3D_HELPER_