Esempio n. 1
0
        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);
        }