From 63e4be9105dab8e11957facadb324bdf2ba23df7 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Fri, 9 Feb 2018 08:48:56 -0800 Subject: Fixed resize window issues in unity app --- unityplugin/UnityEmulator/include/UnityGraphicsD3D11Emulator.h | 3 ++- unityplugin/UnityEmulator/include/UnityGraphicsD3D12Emulator.h | 3 ++- unityplugin/UnityEmulator/include/UnityGraphicsEmulator.h | 1 + unityplugin/UnityEmulator/include/UnityGraphicsGLCoreES_Emulator.h | 3 ++- unityplugin/UnityEmulator/src/UWP/UnityAppUWP.cpp | 1 - unityplugin/UnityEmulator/src/UnityApp.cpp | 5 +++++ unityplugin/UnityEmulator/src/UnityGraphicsD3D11Emulator.cpp | 5 +++++ unityplugin/UnityEmulator/src/UnityGraphicsD3D12Emulator.cpp | 6 ++++++ unityplugin/UnityEmulator/src/UnityGraphicsGLCoreES_Emulator.cpp | 6 ++++++ 9 files changed, 29 insertions(+), 4 deletions(-) (limited to 'unityplugin/UnityEmulator') diff --git a/unityplugin/UnityEmulator/include/UnityGraphicsD3D11Emulator.h b/unityplugin/UnityEmulator/include/UnityGraphicsD3D11Emulator.h index a62c05d..5343617 100644 --- a/unityplugin/UnityEmulator/include/UnityGraphicsD3D11Emulator.h +++ b/unityplugin/UnityEmulator/include/UnityGraphicsD3D11Emulator.h @@ -4,7 +4,7 @@ #include "UnityGraphicsEmulator.h" class UnityGraphicsD3D11Impl; -class UnityGraphicsD3D11Emulator : public UnityGraphicsEmulator +class UnityGraphicsD3D11Emulator final : public UnityGraphicsEmulator { public: static UnityGraphicsD3D11Emulator& GetInstance(); @@ -23,6 +23,7 @@ public: virtual bool SwapChainInitialized()override final; void* GetD3D11Device(); void* GetDXGISwapChain(); + virtual void GetBackBufferSize(unsigned int &Width, unsigned int &Height)override final; private: UnityGraphicsD3D11Emulator(); diff --git a/unityplugin/UnityEmulator/include/UnityGraphicsD3D12Emulator.h b/unityplugin/UnityEmulator/include/UnityGraphicsD3D12Emulator.h index 839db5a..73c23c0 100644 --- a/unityplugin/UnityEmulator/include/UnityGraphicsD3D12Emulator.h +++ b/unityplugin/UnityEmulator/include/UnityGraphicsD3D12Emulator.h @@ -6,7 +6,7 @@ class UnityGraphicsD3D12Impl; class IResourceStateTransitionHandler; -class UnityGraphicsD3D12Emulator : public UnityGraphicsEmulator +class UnityGraphicsD3D12Emulator final : public UnityGraphicsEmulator { public: static UnityGraphicsD3D12Emulator& GetInstance(); @@ -26,6 +26,7 @@ public: virtual bool SwapChainInitialized()override final; void* GetD3D12Device(); void* GetDXGISwapChain(); + virtual void GetBackBufferSize(unsigned int &Width, unsigned int &Height)override final; private: UnityGraphicsD3D12Emulator(); diff --git a/unityplugin/UnityEmulator/include/UnityGraphicsEmulator.h b/unityplugin/UnityEmulator/include/UnityGraphicsEmulator.h index d362836..6364abd 100644 --- a/unityplugin/UnityEmulator/include/UnityGraphicsEmulator.h +++ b/unityplugin/UnityEmulator/include/UnityGraphicsEmulator.h @@ -28,6 +28,7 @@ public: void RegisterDeviceEventCallback(IUnityGraphicsDeviceEventCallback callback); void UnregisterDeviceEventCallback(IUnityGraphicsDeviceEventCallback callback); void InvokeDeviceEventCallback(UnityGfxDeviceEventType eventType); + virtual void GetBackBufferSize(unsigned int &Width, unsigned int &Height) = 0; private: UnityGraphicsEmulator(const UnityGraphicsEmulator&) = delete; diff --git a/unityplugin/UnityEmulator/include/UnityGraphicsGLCoreES_Emulator.h b/unityplugin/UnityEmulator/include/UnityGraphicsGLCoreES_Emulator.h index 17f67f2..694f962 100644 --- a/unityplugin/UnityEmulator/include/UnityGraphicsGLCoreES_Emulator.h +++ b/unityplugin/UnityEmulator/include/UnityGraphicsGLCoreES_Emulator.h @@ -18,7 +18,7 @@ #endif -class UnityGraphicsGLCoreES_Emulator : public UnityGraphicsEmulator +class UnityGraphicsGLCoreES_Emulator final : public UnityGraphicsEmulator { public: static UnityGraphicsGLCoreES_Emulator& GetInstance(); @@ -37,6 +37,7 @@ public: static UnityGraphicsGL_Impl* GetGraphicsImpl(); virtual UnityGfxRenderer GetUnityGfxRenderer()override final; virtual bool SwapChainInitialized()override final; + virtual void GetBackBufferSize(unsigned int &Width, unsigned int &Height)override final; private: UnityGraphicsGLCoreES_Emulator(); diff --git a/unityplugin/UnityEmulator/src/UWP/UnityAppUWP.cpp b/unityplugin/UnityEmulator/src/UWP/UnityAppUWP.cpp index b5407b1..a6d3c3d 100644 --- a/unityplugin/UnityEmulator/src/UWP/UnityAppUWP.cpp +++ b/unityplugin/UnityEmulator/src/UWP/UnityAppUWP.cpp @@ -179,7 +179,6 @@ public: { InitScene(); m_SceneInitialized = true; - OnWindowSizeChanged(); } diff --git a/unityplugin/UnityEmulator/src/UnityApp.cpp b/unityplugin/UnityEmulator/src/UnityApp.cpp index dc9626d..c26be33 100644 --- a/unityplugin/UnityEmulator/src/UnityApp.cpp +++ b/unityplugin/UnityEmulator/src/UnityApp.cpp @@ -175,6 +175,11 @@ void UnityApp::InitScene() UnityPluginLoad(&m_GraphicsEmulator->GeUnityInterfaces()); RenderEventFunc = GetRenderEventFunc(); + + unsigned int SCWidth = 0; + unsigned int SCHeight = 0; + m_GraphicsEmulator->GetBackBufferSize(SCWidth, SCHeight); + m_Scene->OnWindowResize(SCWidth, SCHeight); } void UnityApp::Update(double CurrTime, double ElapsedTime) diff --git a/unityplugin/UnityEmulator/src/UnityGraphicsD3D11Emulator.cpp b/unityplugin/UnityEmulator/src/UnityGraphicsD3D11Emulator.cpp index 7eeca7a..b8e6be5 100644 --- a/unityplugin/UnityEmulator/src/UnityGraphicsD3D11Emulator.cpp +++ b/unityplugin/UnityEmulator/src/UnityGraphicsD3D11Emulator.cpp @@ -329,6 +329,11 @@ void* UnityGraphicsD3D11Emulator::GetDXGISwapChain() return m_GraphicsImpl->GetDXGISwapChain(); } +void UnityGraphicsD3D11Emulator::GetBackBufferSize(unsigned int &Width, unsigned int &Height) +{ + Width = m_GraphicsImpl->GetBackBufferWidth(); + Height = m_GraphicsImpl->GetBackBufferHeight(); +} static ID3D11Device* UNITY_INTERFACE_API UnityGraphicsD3D11_GetDevice() { diff --git a/unityplugin/UnityEmulator/src/UnityGraphicsD3D12Emulator.cpp b/unityplugin/UnityEmulator/src/UnityGraphicsD3D12Emulator.cpp index 1d68f0a..fbcefdf 100644 --- a/unityplugin/UnityEmulator/src/UnityGraphicsD3D12Emulator.cpp +++ b/unityplugin/UnityEmulator/src/UnityGraphicsD3D12Emulator.cpp @@ -336,6 +336,12 @@ void* UnityGraphicsD3D12Emulator::GetDXGISwapChain() return m_GraphicsImpl->GetDXGISwapChain(); } +void UnityGraphicsD3D12Emulator::GetBackBufferSize(unsigned int &Width, unsigned int &Height) +{ + Width = m_GraphicsImpl->GetBackBufferWidth(); + Height = m_GraphicsImpl->GetBackBufferHeight(); +} + CComPtr UnityGraphicsD3D12Impl::GetCommandAllocator() { if (m_CmdAllocator) diff --git a/unityplugin/UnityEmulator/src/UnityGraphicsGLCoreES_Emulator.cpp b/unityplugin/UnityEmulator/src/UnityGraphicsGLCoreES_Emulator.cpp index 0fceadc..0fd790f 100644 --- a/unityplugin/UnityEmulator/src/UnityGraphicsGLCoreES_Emulator.cpp +++ b/unityplugin/UnityEmulator/src/UnityGraphicsGLCoreES_Emulator.cpp @@ -51,6 +51,12 @@ void UnityGraphicsGLCoreES_Emulator::ResizeSwapChain(unsigned int Width, unsigne m_GraphicsImpl->ResizeSwapchain(Width, Height); } +void UnityGraphicsGLCoreES_Emulator::GetBackBufferSize(unsigned int &Width, unsigned int &Height) +{ + Width = m_GraphicsImpl->GetBackBufferWidth(); + Height = m_GraphicsImpl->GetBackBufferHeight(); +} + bool UnityGraphicsGLCoreES_Emulator::SwapChainInitialized() { return m_GraphicsImpl->GetContext() != NULL; -- cgit v1.2.3