/// <summary> /// Render the background texture when called. /// </summary> /// <returns>Is background updated.</returns> public bool RenderBackgoundTextureOnDemand() { // if Background is not initialized we are not rendering if (m_videoOverlayRendererHandler == System.IntPtr.Zero) { return(false); } // render next frame to texture Tango.Common.RetCodes ret = (Tango.Common.RetCodes)TangoVideoOverlayAPI.VideoOverlayRenderFrame(m_videoOverlayRendererHandler, m_backgroundTexture.GetNativeTextureID(), m_backgroundTexture.width, m_backgroundTexture.height); if (ret != Tango.Common.RetCodes.kCAPISuccess) { DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_ERROR, "Failed to render video overlay texture with error code:" + ret); return(false); } #if (UNITY_EDITOR || UNITY_STANDALONE_OSX) //issue plugin event to render right after rendering thread finished rendering Plugin.IssuePluginEvent(Plugin.PluginEvents.RenderFrameEvent); #elif (UNITY_IPHONE || UNITY_ANDROID) GL.InvalidateState(); #else #error platform is not supported #endif return(true); }
/// <summary> /// Render the latest frame. /// </summary> /// <param name="textureID"> Texture handle.</param> /// <param name="width"> Width of the texture.</param> /// <param name="height"> Height of the texture.</param> /// <param name="timestamp"> Timestamp to be filled out by the Tango API.</param> public static void RenderLatestFrame(int textureID, int width, int height, ref double timestamp) { if (!m_isInit) { DebugLogger.GetInstance.WriteToLog(DebugLogger.EDebugLevel.DEBUG_WARN, "VideoOveralyProvider.RenderLatestFrame : Not Initialized!"); return; } TangoVideoOverlayAPI.VideoOverlayRenderLatestFrame(TangoApplication.Instance.Handle, textureID, width, height, ref timestamp); }
/// <summary> /// Init the background texture at end of the frame. /// </summary> /// <returns>Yield return.</returns> private IEnumerator InitBackground() { // wait for end of frame to not interfere with rendering thread on mac yield return(new WaitForEndOfFrame()); Synchronizer sync = gameObject.GetComponent <Synchronizer>(); m_videoOverlayRendererHandler = TangoVideoOverlayAPI.VideoOverlayInitialize(sync.handler); if (m_videoOverlayRendererHandler == System.IntPtr.Zero) { DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_WARN, "Failed to initialize VideoOverlay"); } #if (UNITY_EDITOR || UNITY_STANDALONE_OSX) //issue plugin event to render right after rendering thread finished rendering Plugin.IssuePluginEvent(Plugin.PluginEvents.InitBackgroundEvent); #elif (UNITY_IPHONE || UNITY_ANDROID) GL.InvalidateState(); #else #error platform is not supported #endif }
/// <summary> /// Render the background texture at the end of frame. /// </summary> /// <returns>Yield return.</returns> private IEnumerator RenderBackgoundTexture() { while (is_runningBackgroundRenderLoop) { // if Background is not initialized we are not rendering if (m_videoOverlayRendererHandler == System.IntPtr.Zero) { yield return(null); } // wait for end of frame to not interfere with rendering thread on mac yield return(new WaitForEndOfFrame()); // render next frame to texture Tango.Common.RetCodes ret = (Tango.Common.RetCodes)TangoVideoOverlayAPI.VideoOverlayRenderFrame(m_videoOverlayRendererHandler, m_backgroundTexture.GetNativeTextureID(), m_backgroundTexture.width, m_backgroundTexture.height); if (ret != Tango.Common.RetCodes.kCAPISuccess) { DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_ERROR, "Failed to render video overlay texture with error code:" + ret); } #if (UNITY_EDITOR || UNITY_STANDALONE_OSX) // issue plugin event to render right after rendering thread finished rendering Plugin.IssuePluginEvent(Plugin.PluginEvents.RenderFrameEvent); #elif (UNITY_IPHONE || UNITY_ANDROID) GL.InvalidateState(); #else #error platform is not supported #endif // yield now to let class stop this coroutine if needed yield return(null); } }
/// <summary> /// Shutdown the video overlay provider. /// </summary> public static void Shutdown() { m_isInit = false; TangoVideoOverlayAPI.VideoOverlayShutdown(TangoApplication.Instance.Handle); }
/// <summary> /// Initialize the video overlay provider. /// </summary> public static void Init() { m_isInit = true; TangoVideoOverlayAPI.VideoOverlayInitialize(TangoApplication.Instance.Handle); }