summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/include/bgfxplatform.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/include/bgfxplatform.h')
-rw-r--r--3rdparty/bgfx/include/bgfxplatform.h122
1 files changed, 99 insertions, 23 deletions
diff --git a/3rdparty/bgfx/include/bgfxplatform.h b/3rdparty/bgfx/include/bgfxplatform.h
index 4598fc1e7d7..8a2cf5a0711 100644
--- a/3rdparty/bgfx/include/bgfxplatform.h
+++ b/3rdparty/bgfx/include/bgfxplatform.h
@@ -30,7 +30,19 @@ namespace bgfx
/// allow creating separate rendering thread. If it is called before
/// to bgfx::init, render thread won't be created by bgfx::init call.
RenderFrame::Enum renderFrame();
-}
+
+ struct PlatformData
+ {
+ void* ndt; //< Native display type
+ void* nwh; //< Native window handle
+ void* context; //< GL context, or D3D device
+ void* backBuffer; //< GL backbuffer, or D3D render target view
+ void* backBufferDS; //< Backbuffer depth/stencil.
+ };
+
+ void setPlatformData(const PlatformData& _hooks);
+
+} // namespace bgfx
#if BX_PLATFORM_ANDROID
# include <android/native_window.h>
@@ -38,7 +50,16 @@ namespace bgfx
namespace bgfx
{
///
- void androidSetWindow(::ANativeWindow* _window);
+ inline void androidSetWindow(::ANativeWindow* _window)
+ {
+ PlatformData pd;
+ pd.ndt = NULL;
+ pd.nwh = _window;
+ pd.context = NULL;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
@@ -46,7 +67,16 @@ namespace bgfx
namespace bgfx
{
///
- void iosSetEaglLayer(void* _layer);
+ inline void iosSetEaglLayer(void* _window)
+ {
+ PlatformData pd;
+ pd.ndt = NULL;
+ pd.nwh = _window;
+ pd.context = NULL;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
@@ -55,7 +85,16 @@ namespace bgfx
namespace bgfx
{
///
- void x11SetDisplayWindow(void* _display, uint32_t _window, void* _glx = NULL);
+ inline void x11SetDisplayWindow(void* _display, uint32_t _window, void* _glx = NULL)
+ {
+ PlatformData pd;
+ pd.ndt = _display;
+ pd.nwh = (void*)(uintptr_t)_window;
+ pd.context = _glx;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
@@ -76,7 +115,16 @@ namespace bgfx
namespace bgfx
{
///
- void osxSetNSWindow(void* _window, void* _nsgl = NULL);
+ inline void osxSetNSWindow(void* _window, void* _nsgl = NULL)
+ {
+ PlatformData pd;
+ pd.ndt = NULL;
+ pd.nwh = _window;
+ pd.context = _nsgl;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
@@ -86,7 +134,16 @@ namespace bgfx
namespace bgfx
{
///
- void winSetHwnd(::HWND _window);
+ inline void winSetHwnd(::HWND _window)
+ {
+ PlatformData pd;
+ pd.ndt = NULL;
+ pd.nwh = _window;
+ pd.context = NULL;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
@@ -96,18 +153,25 @@ namespace bgfx
namespace bgfx
{
///
- void winrtSetWindow(IUnknown* _window);
+ inline void winrtSetWindow(::IUnknown* _window)
+ {
+ PlatformData pd;
+ pd.ndt = NULL;
+ pd.nwh = _window;
+ pd.context = NULL;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
+ }
} // namespace bgfx
#endif // BX_PLATFORM_
-#if defined(_SDL_H)
-// If SDL.h is included before bgfxplatform.h we can enable SDL window
+#if defined(_SDL_syswm_h)
+// If SDL_syswm.h is included before bgfxplatform.h we can enable SDL window
// interop convenience code.
-# include <SDL2/SDL_syswm.h>
-
namespace bgfx
{
///
@@ -120,13 +184,21 @@ namespace bgfx
return false;
}
+ PlatformData pd;
# if BX_PLATFORM_LINUX || BX_PLATFORM_FREEBSD
- x11SetDisplayWindow(wmi.info.x11.display, wmi.info.x11.window);
+ pd.ndt = wmi.info.x11.display;
+ pd.nwh = (void*)(uintptr_t)wmi.info.x11.window;
# elif BX_PLATFORM_OSX
- osxSetNSWindow(wmi.info.cocoa.window);
+ pd.ndt = NULL;
+ pd.nwh = wmi.info.cocoa.window;
# elif BX_PLATFORM_WINDOWS
- winSetHwnd(wmi.info.win.window);
+ pd.ndt = NULL;
+ pd.nwh = wmi.info.win.window;
# endif // BX_PLATFORM_
+ pd.context = NULL;
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
return true;
}
@@ -153,19 +225,23 @@ namespace bgfx
{
inline void glfwSetWindow(GLFWwindow* _window)
{
+ PlatformData pd;
# if BX_PLATFORM_LINUX || BX_PLATFORM_FREEBSD
- ::Display* display = glfwGetX11Display();
- ::Window window = glfwGetX11Window(_window);
- void* glx = glfwGetGLXContext(_window);
- x11SetDisplayWindow(display, window, glx);
+ pd.ndt = glfwGetX11Display();
+ pd.nwh = (void*)(uintptr_t)glfwGetX11Window(_window);
+ pd.context = glfwGetGLXContext(_window);
# elif BX_PLATFORM_OSX
- void* window = glfwGetCocoaWindow(_window);
- void* nsgl = glfwGetNSGLContext(_window);
- osxSetNSWindow(window, nsgl);
+ pd.ndt = NULL;
+ pd.nwh = glfwGetCocoaWindow(_window);
+ pd.context = glfwGetNSGLContext(_window);
# elif BX_PLATFORM_WINDOWS
- HWND hwnd = glfwGetWin32Window(_window);
- winSetHwnd(hwnd);
+ pd.ndt = NULL;
+ pd.nwh = glfwGetWin32Window(_window);
+ pd.context = NULL;
# endif // BX_PLATFORM_WINDOWS
+ pd.backBuffer = NULL;
+ pd.backBufferDS = NULL;
+ setPlatformData(pd);
}
} // namespace bgfx