public override void UpdateCamera(Camera _camera) { _camera.projectionMatrix = NativeInterface.GetCameraProjection(); if (!m_isBackgroundRendering) { return; } var handles = default(ARTextureHandles); //Preprocessor locked because 'GetARVideoTextureHandles' is not declared in all platforms #if !UNITY_EDITOR && UNITY_IOS handles = NativeInterface.GetARVideoTextureHandles(); #endif if (handles.textureY == IntPtr.Zero || handles.textureCbCr == IntPtr.Zero) { m_canRenderBackground = false; return; } m_canRenderBackground = true; IsRenderingBackground = m_isBackgroundRendering; Resolution currentResolution = Screen.currentResolution; //Texture Y if (m_videoTextureY == null) { m_videoTextureY = Texture2D.CreateExternalTexture( currentResolution.width, currentResolution.height, TextureFormat.R8, false, false, handles.textureY ); m_videoTextureY.filterMode = FilterMode.Bilinear; m_videoTextureY.wrapMode = TextureWrapMode.Repeat; m_clearMaterial.SetTexture("_textureY", m_videoTextureY); } //Texture CbCr if (m_videoTextureCbCr == null) { m_videoTextureCbCr = Texture2D.CreateExternalTexture( currentResolution.width, currentResolution.height, TextureFormat.RG16, false, false, handles.textureCbCr ); m_videoTextureCbCr.filterMode = FilterMode.Bilinear; m_videoTextureCbCr.wrapMode = TextureWrapMode.Repeat; m_clearMaterial.SetTexture("_textureCbCr", m_videoTextureCbCr); } m_videoTextureY.UpdateExternalTexture(handles.textureY); m_videoTextureCbCr.UpdateExternalTexture(handles.textureCbCr); m_clearMaterial.SetMatrix("_DisplayTransform", m_displayTransform); }