Kaynağa Gözat

Added SDL2 support.

bkaradzic 12 yıl önce
ebeveyn
işleme
5b6a42e5cd
1 değiştirilmiş dosya ile 43 ekleme ve 0 silme
  1. 43 0
      include/bgfxplatform.h

+ 43 - 0
include/bgfxplatform.h

@@ -17,13 +17,17 @@
 
 
 namespace bgfx
 namespace bgfx
 {
 {
+	///
 	void androidSetWindow(::ANativeWindow* _window);
 	void androidSetWindow(::ANativeWindow* _window);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #elif BX_PLATFORM_IOS
 #elif BX_PLATFORM_IOS
 namespace bgfx
 namespace bgfx
 {
 {
+	///
 	void iosSetEaglLayer(void* _layer);
 	void iosSetEaglLayer(void* _layer);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #elif BX_PLATFORM_LINUX
 #elif BX_PLATFORM_LINUX
@@ -31,7 +35,9 @@ namespace bgfx
 
 
 namespace bgfx
 namespace bgfx
 {
 {
+	///
 	void x11SetDisplayWindow(::Display* _display, ::Window _window);
 	void x11SetDisplayWindow(::Display* _display, ::Window _window);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #elif BX_PLATFORM_NACL
 #elif BX_PLATFORM_NACL
@@ -41,13 +47,18 @@ namespace bgfx
 namespace bgfx
 namespace bgfx
 {
 {
 	typedef void (*PostSwapBuffersFn)(uint32_t _width, uint32_t _height);
 	typedef void (*PostSwapBuffersFn)(uint32_t _width, uint32_t _height);
+
+	///
 	void naclSetIntefraces(::PP_Instance, const ::PPB_Instance*, const ::PPB_Graphics3D*, PostSwapBuffersFn);
 	void naclSetIntefraces(::PP_Instance, const ::PPB_Instance*, const ::PPB_Graphics3D*, PostSwapBuffersFn);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #elif BX_PLATFORM_OSX
 #elif BX_PLATFORM_OSX
 namespace bgfx
 namespace bgfx
 {
 {
+	///
 	void osxSetNSWindow(void* _window);
 	void osxSetNSWindow(void* _window);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #elif BX_PLATFORM_WINDOWS
 #elif BX_PLATFORM_WINDOWS
@@ -55,9 +66,41 @@ namespace bgfx
 
 
 namespace bgfx
 namespace bgfx
 {
 {
+	///
 	void winSetHwnd(::HWND _window);
 	void winSetHwnd(::HWND _window);
+
 } // namespace bgfx
 } // namespace bgfx
 
 
 #endif // BX_PLATFORM_
 #endif // BX_PLATFORM_
 
 
+#ifdef _SDL_H
+// If SDL is included before bgfxplatform.h we can enable SDL window interop
+// convenience code.
+#	include <SDL_syswm.h>
+
+namespace bgfx
+{
+	///
+	inline bool sdlSetWindow(SDL_Window* _window)
+	{
+		SDL_SysWMinfo wmi;
+		SDL_VERSION(&wmi.version);
+		if (-1 == SDL_GetWindowWMInfo(_window, &wmi) )
+		{
+			return false;
+		}
+
+#if BX_PLATFORM_LINUX
+		x11SetDisplayWindow(wmi.info.x11.display, wmi.info.x11.window);
+#elif BX_PLATFORM_OSX
+		osxSetNSWindow(wmi.info.cocoa.window);
+#elif BX_PLATFORM_WINDOWS
+		winSetHwnd(wmi.info.win.window);
+#endif // BX_PLATFORM_
+
+		return true;
+	}
+} // namespace bgfx
+#endif // _SDL_H
+
 #endif // __BGFXPLATFORM_H__
 #endif // __BGFXPLATFORM_H__