Преглед изворни кода

Adding WinRT platform function and setting it to use multithreaded rendering.

Mike Popoloski пре 11 година
родитељ
комит
0b55cb1348
4 измењених фајлова са 25 додато и 0 уклоњено
  1. 10 0
      include/bgfxplatform.h
  2. 11 0
      src/bgfx.cpp
  3. 2 0
      src/bgfx_p.h
  4. 2 0
      src/config.h

+ 10 - 0
include/bgfxplatform.h

@@ -91,6 +91,16 @@ namespace bgfx
 
 } // namespace bgfx
 
+#elif BX_PLATFORM_WINRT
+#   include <Unknwn.h>
+
+namespace bgfx
+{
+    ///
+    void winrtSetWindow(IUnknown* _window);
+
+} // namespace bgfx
+
 #endif // BX_PLATFORM_
 
 #if defined(_SDL_H)

+ 11 - 0
src/bgfx.cpp

@@ -46,6 +46,13 @@ namespace bgfx
 	{
 		g_bgfxHwnd = _window;
 	}
+#elif BX_PLATFORM_WINRT
+    ::IUnknown* g_bgfxCoreWindow = NULL;
+
+    void winrtSetWindow(::IUnknown* _window)
+    {
+        g_bgfxCoreWindow = _window;
+    }
 #endif // BX_PLATFORM_*
 
 #if BGFX_CONFIG_USE_TINYSTL
@@ -1386,6 +1393,10 @@ again:
 			{
 				_type = RendererType::OpenGLES;
 			}
+            else if (BX_ENABLED(BX_PLATFORM_WINRT))
+            {
+                _type = RendererType::Direct3D11;
+            }
 			else
 			{
 				_type = RendererType::OpenGL;

+ 2 - 0
src/bgfx_p.h

@@ -198,6 +198,8 @@ namespace bgfx
 	extern void* g_bgfxNSWindow;
 #elif BX_PLATFORM_WINDOWS
 	extern ::HWND g_bgfxHwnd;
+#elif BX_PLATFORM_WINRT
+    extern ::IUnknown* g_bgfxCoreWindow;
 #endif // BX_PLATFORM_*
 
 	struct Clear

+ 2 - 0
src/config.h

@@ -29,6 +29,7 @@
 #	ifndef BGFX_CONFIG_RENDERER_DIRECT3D11
 #		define BGFX_CONFIG_RENDERER_DIRECT3D11 (0 \
 					|| (BX_PLATFORM_WINDOWS && BX_PLATFORM_WINDOWS >= 0x0601 /*_WIN32_WINNT_WIN7*/) \
+                    || BX_PLATFORM_WINRT \
 					? 1 : 0)
 #	endif // BGFX_CONFIG_RENDERER_DIRECT3D11
 
@@ -149,6 +150,7 @@
 						|| BX_PLATFORM_RPI \
 						|| BX_PLATFORM_WINDOWS \
 						|| BX_PLATFORM_XBOX360 \
+                        || BX_PLATFORM_WINRT \
 						? 1 : 0) )
 #endif // BGFX_CONFIG_MULTITHREADED