#pragma once #include #include #include #include #include #include "DirectXHelper.h" // Helper class that initializes DirectX APIs for 3D rendering. ref class Direct3DBase abstract { internal: Direct3DBase(); public: virtual void Initialize(Windows::UI::Core::CoreWindow^ window); virtual void HandleDeviceLost(); virtual void CreateDeviceResources(); virtual void CreateWindowSizeDependentResources(); virtual void UpdateForWindowSizeChange(); virtual void ReleaseResourcesForSuspending(); //virtual void Render() = 0; virtual void Present(); virtual float ConvertDipsToPixels(float dips); virtual void ComputeOrientationMatrices(); virtual Windows::Foundation::Vector2 TransformToOrientation(Windows::Foundation::Vector2 point, bool dipsToPixels=true); float getOrientedWindowWidth() {return m_orientedScreenSize.Width;}; float getOrientedWindowHeight() {return m_orientedScreenSize.Height;}; protected private: // Direct3D Objects. Microsoft::WRL::ComPtr m_d3dDevice; Microsoft::WRL::ComPtr m_d3dContext; Microsoft::WRL::ComPtr m_swapChain; Microsoft::WRL::ComPtr m_renderTargetView; Microsoft::WRL::ComPtr m_depthStencilView; // Cached renderer properties. D3D_FEATURE_LEVEL m_featureLevel; Windows::Foundation::Size m_renderTargetSize; Windows::Foundation::Rect m_windowBounds; Platform::Agile m_window; // Store the current Orientation of the device Windows::Graphics::Display::DisplayOrientations m_orientation; // Size of the virtual, oriented screen Windows::Foundation::Size m_orientedScreenSize; // Transforms used for rendering 2D and 3D elements in proper orientation DirectX::XMMATRIX m_orientationTransform3D; DirectX::XMMATRIX m_orientationTransform2D; };