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); }