示例#1
0
        protected override void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                CleanUpTextures();

                if (videoTextureCache != null)
                {
                    videoTextureCache.Flush(CVOptionFlags.None);
                    videoTextureCache.Dispose();
                }

                if (context != null)
                {
                    context.Dispose();
                }
            }

            GL.DeleteFramebuffers(1, ref frameBufferHandle);
            GL.DeleteRenderbuffers(1, ref colorBufferHandle);
            disposed = true;

            base.Dispose(disposing);
        }
        public void SetupOffScreenRenderContext()
        {
            //-- Create CVOpenGLESTextureCacheRef for optimal CVPixelBufferRef to GLES texture conversion.
            if (VideoTextureCache != null)
            {
                VideoTextureCache.Dispose();
                VideoTextureCache = null;
            }

            VideoTextureCache = CVOpenGLESTextureCache.FromEAGLContext(CurrentContext);
            GL.Disable(EnableCap.DepthTest);
            GL.GenFramebuffers(1, out OffscreenBufferHandle);
            GL.BindFramebuffer(FramebufferTarget.Framebuffer, OffscreenBufferHandle);
        }