瀏覽代碼

Moved SDL and GLFW window platform hooks to entry.

Branimir Karadžić 9 年之前
父節點
當前提交
939829f88c
共有 3 個文件被更改,包括 69 次插入87 次删除
  1. 35 1
      examples/common/entry/entry_glfw.cpp
  2. 34 3
      examples/common/entry/entry_sdl.cpp
  3. 0 83
      include/bgfx/bgfxplatform.h

+ 35 - 1
examples/common/entry/entry_glfw.cpp

@@ -7,8 +7,21 @@
 
 #if ENTRY_CONFIG_USE_GLFW
 
+#if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
+#	define GLFW_EXPOSE_NATIVE_X11
+#	define GLFW_EXPOSE_NATIVE_GLX
+#elif BX_PLATFORM_OSX
+#	define GLFW_EXPOSE_NATIVE_COCOA
+#	define GLFW_EXPOSE_NATIVE_NSGL
+#elif BX_PLATFORM_WINDOWS
+#	define GLFW_EXPOSE_NATIVE_WIN32
+#	define GLFW_EXPOSE_NATIVE_WGL
+#endif //
+
 #define GLFW_DLL
 #include <GLFW/glfw3.h>
+#include <GLFW/glfw3native.h>
+
 #include <bgfx/bgfxplatform.h>
 #include "dbg.h"
 
@@ -17,6 +30,27 @@
 
 namespace entry
 {
+	inline void glfwSetWindow(GLFWwindow* _window)
+	{
+		bgfx::PlatformData pd;
+#	if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
+		pd.ndt          = glfwGetX11Display();
+		pd.nwh          = (void*)(uintptr_t)glfwGetGLXWindow(_window);
+		pd.context      = glfwGetGLXContext(_window);
+#	elif BX_PLATFORM_OSX
+		pd.ndt          = NULL;
+		pd.nwh          = glfwGetCocoaWindow(_window);
+		pd.context      = glfwGetNSGLContext(_window);
+#	elif BX_PLATFORM_WINDOWS
+		pd.ndt          = NULL;
+		pd.nwh          = glfwGetWin32Window(_window);
+		pd.context      = NULL;
+#	endif // BX_PLATFORM_WINDOWS
+		pd.backBuffer   = NULL;
+		pd.backBufferDS = NULL;
+		bgfx::setPlatformData(pd);
+	}
+
 	static void errorCb(int _error, const char* _description)
 	{
 		DBG("GLFW error %d: %s", _error, _description);
@@ -38,7 +72,7 @@ namespace entry
 
 			glfwSetKeyCallback(m_window, keyCb);
 
-			bgfx::glfwSetWindow(m_window);
+			glfwSetWindow(m_window);
 			int result = main(_argc, _argv);
 
 			glfwDestroyWindow(m_window);

+ 34 - 3
examples/common/entry/entry_sdl.cpp

@@ -15,10 +15,10 @@
 
 #include <SDL2/SDL.h>
 
-BX_PRAGMA_DIAGNOSTIC_PUSH_CLANG()
+BX_PRAGMA_DIAGNOSTIC_PUSH()
 BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wextern-c-compat")
 #include <SDL2/SDL_syswm.h>
-BX_PRAGMA_DIAGNOSTIC_POP_CLANG()
+BX_PRAGMA_DIAGNOSTIC_POP()
 
 #include <bgfx/bgfxplatform.h>
 #if defined(None) // X11 defines this...
@@ -35,6 +35,37 @@ BX_PRAGMA_DIAGNOSTIC_POP_CLANG()
 
 namespace entry
 {
+	inline bool sdlSetWindow(SDL_Window* _window)
+	{
+		SDL_SysWMinfo wmi;
+		SDL_VERSION(&wmi.version);
+		if (!SDL_GetWindowWMInfo(_window, &wmi) )
+		{
+			return false;
+		}
+
+		bgfx::PlatformData pd;
+#	if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
+		pd.ndt          = wmi.info.x11.display;
+		pd.nwh          = (void*)(uintptr_t)wmi.info.x11.window;
+#	elif BX_PLATFORM_OSX
+		pd.ndt          = NULL;
+		pd.nwh          = wmi.info.cocoa.window;
+#	elif BX_PLATFORM_WINDOWS
+		pd.ndt          = NULL;
+		pd.nwh          = wmi.info.win.window;
+#	elif BX_PLATFORM_STEAMLINK
+		pd.ndt          = wmi.info.vivante.display;
+		pd.nwh          = wmi.info.vivante.window;
+#	endif // BX_PLATFORM_
+		pd.context      = NULL;
+		pd.backBuffer   = NULL;
+		pd.backBufferDS = NULL;
+		bgfx::setPlatformData(pd);
+
+		return true;
+	}
+
 	static uint8_t translateKeyModifiers(uint16_t _sdl)
 	{
 		uint8_t modifiers = 0;
@@ -446,7 +477,7 @@ namespace entry
 
 			s_userEventStart = SDL_RegisterEvents(7);
 
-			bgfx::sdlSetWindow(m_window[0]);
+			sdlSetWindow(m_window[0]);
 			bgfx::renderFrame();
 
 			m_thread.init(MainThreadEntry::threadFunc, &m_mte);

+ 0 - 83
include/bgfx/bgfxplatform.h

@@ -253,87 +253,4 @@ namespace bgfx
 
 #endif // BX_PLATFORM_
 
-#if defined(_SDL_syswm_h)
-// If SDL_syswm.h is included before bgfxplatform.h we can enable SDL window
-// interop convenience code.
-
-namespace bgfx
-{
-	///
-	inline bool sdlSetWindow(SDL_Window* _window)
-	{
-		SDL_SysWMinfo wmi;
-		SDL_VERSION(&wmi.version);
-		if (!SDL_GetWindowWMInfo(_window, &wmi) )
-		{
-			return false;
-		}
-
-		PlatformData pd;
-#	if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
-		pd.ndt          = wmi.info.x11.display;
-		pd.nwh          = (void*)(uintptr_t)wmi.info.x11.window;
-#	elif BX_PLATFORM_OSX
-		pd.ndt          = NULL;
-		pd.nwh          = wmi.info.cocoa.window;
-#	elif BX_PLATFORM_WINDOWS
-		pd.ndt          = NULL;
-		pd.nwh          = wmi.info.win.window;
-#	elif BX_PLATFORM_STEAMLINK
-		pd.ndt          = wmi.info.vivante.display;
-		pd.nwh          = wmi.info.vivante.window;
-#	endif // BX_PLATFORM_
-		pd.context      = NULL;
-		pd.backBuffer   = NULL;
-		pd.backBufferDS = NULL;
-		setPlatformData(pd);
-
-		return true;
-	}
-
-} // namespace bgfx
-
-#elif defined(_glfw3_h_)
-// If GLFW/glfw3.h is included before bgfxplatform.h we can enable GLFW3
-// window interop convenience code.
-
-#	if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
-#		define GLFW_EXPOSE_NATIVE_X11
-#		define GLFW_EXPOSE_NATIVE_GLX
-#	elif BX_PLATFORM_OSX
-#		define GLFW_EXPOSE_NATIVE_COCOA
-#		define GLFW_EXPOSE_NATIVE_NSGL
-#	elif BX_PLATFORM_WINDOWS
-#		define GLFW_EXPOSE_NATIVE_WIN32
-#		define GLFW_EXPOSE_NATIVE_WGL
-#	endif //
-#	include <GLFW/glfw3native.h>
-
-namespace bgfx
-{
-	inline void glfwSetWindow(GLFWwindow* _window)
-	{
-		PlatformData pd;
-#	if BX_PLATFORM_LINUX || BX_PLATFORM_BSD
-		pd.ndt          = glfwGetX11Display();
-		pd.nwh          = (void*)(uintptr_t)glfwGetGLXWindow(_window);
-		pd.context      = glfwGetGLXContext(_window);
-#	elif BX_PLATFORM_OSX
-		pd.ndt          = NULL;
-		pd.nwh          = glfwGetCocoaWindow(_window);
-		pd.context      = glfwGetNSGLContext(_window);
-#	elif BX_PLATFORM_WINDOWS
-		pd.ndt          = NULL;
-		pd.nwh          = glfwGetWin32Window(_window);
-		pd.context      = NULL;
-#	endif // BX_PLATFORM_WINDOWS
-		pd.backBuffer   = NULL;
-		pd.backBufferDS = NULL;
-		setPlatformData(pd);
-	}
-
-} // namespace bgfx
-
-#endif // defined(_SDL_H)
-
 #endif // BGFX_PLATFORM_H_HEADER_GUARD