private void DrawingSurface_Loaded(object sender, RoutedEventArgs e) { if (m_d3dInterop == null) { m_d3dInterop = new Direct3DInterop(); // Set window bounds in dips m_d3dInterop.WindowBounds = new Windows.Foundation.Size((float)DrawingSurface.ActualWidth, (float)DrawingSurface.ActualHeight); // Set native resolution in pixels m_d3dInterop.NativeResolution = new Windows.Foundation.Size((float)Math.Floor(DrawingSurface.ActualWidth * Application.Current.Host.Content.ScaleFactor / 100.0f + 0.5f), (float)Math.Floor(DrawingSurface.ActualHeight * Application.Current.Host.Content.ScaleFactor / 100.0f + 0.5f)); // Set render resolution to the full native resolution m_d3dInterop.RenderResolution = m_d3dInterop.NativeResolution; // Hook-up native component to DrawingSurface DrawingSurface.SetContentProvider(m_d3dInterop.CreateContentProvider(m_username, false)); DrawingSurface.SetManipulationHandler(m_d3dInterop); m_d3dInterop.setWinRtCallback(new WinRtCallback(ProcessCallback)); string preGameUpdate = "{\"" + EVENT_TYPE + "\":" + PRE_GAME + ",\"" + PHASE + "\":" + CONNECTING + "}"; Deployment.Current.Dispatcher.BeginInvoke(() => { m_d3dInterop.onChatReceived(preGameUpdate); WarpClient.GetInstance().AddConnectionRequestListener(m_connectionRequestListener); WarpClient.GetInstance().AddNotificationListener(m_notifyListener); WarpClient.GetInstance().Connect(m_username, AppWarpConstants.APPWARP_AUTH_DATA); }); } }