Przeglądaj źródła

add SwapChainPanel support (#2215)

Wencey Wang 5 lat temu
rodzic
commit
8524982c30
1 zmienionych plików z 40 dodań i 11 usunięć
  1. 40 11
      src/dxgi.cpp

+ 40 - 11
src/dxgi.cpp

@@ -458,25 +458,54 @@ namespace bgfx
 
 #	if BX_PLATFORM_WINRT
 			IInspectable *nativeWindow = reinterpret_cast<IInspectable *>(_scd.nwh);
-			ISwapChainBackgroundPanelNative* panel = NULL;
+			ISwapChainPanelNative* swapChainPanelNative;
+
 			hr = nativeWindow->QueryInterface(
-				  __uuidof(ISwapChainBackgroundPanelNative)
-				, (void **)&panel
-				);
-			if (FAILED(hr) )
+				__uuidof(ISwapChainPanelNative)
+				, (void**)&swapChainPanelNative);
+
+			if (!FAILED(hr))
 			{
-				return hr;
-			}
+				// Swap Chain Panel
+				if (NULL != swapChainPanelNative)
+				{
+					hr = swapChainPanelNative->SetSwapChain(*_swapChain);
 
-			if (NULL != panel)
+					if (FAILED(hr))
+					{
+						return hr;
+					}
+
+					swapChainPanelNative->Release();
+				}
+			}
+			else
 			{
-				hr = panel->SetSwapChain(*_swapChain);
-				if (FAILED(hr) )
+				// Swap Chain Background Panel
+				
+				ISwapChainBackgroundPanelNative* swapChainBackgroundPanelNative = NULL;
+
+				hr = nativeWindow->QueryInterface(
+					__uuidof(ISwapChainBackgroundPanelNative)
+					, (void**)&swapChainBackgroundPanelNative
+				);
+
+				if (FAILED(hr))
 				{
 					return hr;
 				}
 
-				panel->Release();
+				if (NULL != swapChainBackgroundPanelNative)
+				{
+					hr = swapChainBackgroundPanelNative->SetSwapChain(*_swapChain);
+
+					if (FAILED(hr))
+					{
+						return hr;
+					}
+
+					swapChainBackgroundPanelNative->Release();
+				}
 			}
 #	endif // BX_PLATFORM_WINRT
 		}