diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphics/DisplayManager.h |
Diffstat (limited to 'Runtime/Graphics/DisplayManager.h')
-rw-r--r-- | Runtime/Graphics/DisplayManager.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Runtime/Graphics/DisplayManager.h b/Runtime/Graphics/DisplayManager.h new file mode 100644 index 0000000..6de5f08 --- /dev/null +++ b/Runtime/Graphics/DisplayManager.h @@ -0,0 +1,54 @@ +#pragma once +#include "UnityPrefix.h" + +// we do c-style interface, because display management is way too platfrom specific +// these function will be used from script +// UnityDisplayManager prefix is used because some platforms implements this in trampoline + +#define SUPPORT_MULTIPLE_DISPLAYS UNITY_IPHONE + +#if !SUPPORT_MULTIPLE_DISPLAYS + #include "ScreenManager.h" +#endif + +struct RenderSurfaceBase; + +#if SUPPORT_MULTIPLE_DISPLAYS + + extern "C" int UnityDisplayManager_DisplayCount(); + extern "C" bool UnityDisplayManager_DisplayAvailable(void* nativeDisplay); + extern "C" void UnityDisplayManager_DisplaySystemResolution(void* nativeDisplay, int* w, int* h); + extern "C" void UnityDisplayManager_DisplayRenderingResolution(void* nativeDisplay, int* w, int* h); + extern "C" void UnityDisplayManager_DisplayRenderingBuffers(void* nativeDisplay, RenderSurfaceBase** colorBuffer, RenderSurfaceBase** depthBuffer); + extern "C" void UnityDisplayManager_SetRenderingResolution(void* nativeDisplay, int w, int h); + +#else + + inline int UnityDisplayManager_DisplayCount() + { + return 1; + } + inline bool UnityDisplayManager_DisplayAvailable(void*) + { + return true; + } + inline void UnityDisplayManager_DisplaySystemResolution(void*, int* w, int* h) + { + *w = GetScreenManager().GetWidth(); + *h = GetScreenManager().GetHeight(); + } + inline void UnityDisplayManager_DisplayRenderingResolution(void*, int* w, int* h) + { + *w = GetScreenManager().GetWidth(); + *h = GetScreenManager().GetHeight(); + } + inline void UnityDisplayManager_SetRenderingResolution(void*, int w, int h) + { + GetScreenManager().RequestResolution(w, h, GetScreenManager ().IsFullScreen (), 0); + } + inline void UnityDisplayManager_DisplayRenderingBuffers(void*, RenderSurfaceBase** color, RenderSurfaceBase** depth) + { + *color = *depth = 0; + } + +#endif |