private void CloseDx() { logger.Debug("GDICapture::CloseDx()"); if (renderTarget != null) { renderTarget.Dispose(); renderTarget = null; } if (renderTexture != null) { renderTexture.Dispose(); renderTexture = null; } if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } if (gdiTexture != null) { gdiTexture.Dispose(); gdiTexture = null; } if (device != null) { device.Dispose(); device = null; } }
protected override void DisposeManaged() { _renderer.Dispose(); if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } if (SampleRenderView != null) { SampleRenderView.Dispose(); SampleRenderView = null; } if (SampleDepthView != null) { SampleDepthView.Dispose(); SampleDepthView = null; } if (Device != null) { Device.Dispose(); Device = null; } }
/// <summary> /// Disposes of our managed resources. /// </summary> protected override void DisposeManaged() { { if (m_sampleVertices != null) { m_sampleVertices.Dispose(); m_sampleVertices = null; } if (m_sampleLayout != null) { m_sampleLayout.Dispose(); m_sampleLayout = null; } if (m_sampleStream != null) { m_sampleStream.Dispose(); m_sampleStream = null; } } { if (m_boxVertices != null) { m_boxVertices.Dispose(); m_boxVertices = null; } if (m_boxLayout != null) { m_boxLayout.Dispose(); m_boxLayout = null; } if (m_boxStream != null) { m_boxStream.Dispose(); m_boxStream = null; } } if (m_effect != null) { m_effect.Dispose(); m_effect = null; } if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } base.DisposeManaged(); return; }
/// <inheritdoc /> /// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { ReleaseFrame(); if (this.duplications != null) { foreach (OutputDuplication duplication in this.duplications) { duplication?.Dispose(); } } SharedTexture?.Dispose(); if (StagingTextures != null) { foreach (Texture2D texture in StagingTextures) { texture.Dispose(); } } if (this.devices != null) { foreach (Device dev in this.devices) { dev?.Dispose(); } } if (this.outputs != null) { foreach (Output output in this.outputs) { output?.Dispose(); } } if (this.adapters != null) { foreach (Adapter adapter in this.adapters) { adapter?.Dispose(); } } GC.Collect(); GC.WaitForPendingFinalizers(); }
private void DestroyD3D() { _textureManager.Dispose(); _dxCube.Dispose(); //_dxEffect.Dispose(); _kinectPoints.Dispose(); if (_dxFont != null) { _dxFont.Dispose(); _dxFont = null; } if (DepthTexture != null) { DepthTexture.Dispose(); DepthTexture = null; } if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } if (_dxRenderView != null) { _dxRenderView.Dispose(); _dxRenderView = null; } if (_dxDepthStencilView != null) { _dxDepthStencilView.Dispose(); _dxDepthStencilView = null; } if (_dxDevice != null) { _dxDevice.Dispose(); _dxDevice = null; } }
private void CleanUp() { if (sourceReaderCallback != null) { sourceReaderCallback.OnReadSample -= SourceReaderCallback_OnReadSample; sourceReaderCallback.OnFlush -= SourceReaderCallback_OnFlush; } if (sourceReader != null) { //sourceReader.Flush(SourceReaderIndex.FirstVideoStream); sourceReader.Dispose(); sourceReader = null; } if (device != null) { device.Dispose(); device = null; } if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } if (stagingTexture != null) { stagingTexture.Dispose(); stagingTexture = null; } if (processor != null) { processor.Close(); processor = null; } }
private void EnsureOutputBuffers() { if (SharedTexture == null || SharedTexture.Description.Width != ClientWidth || SharedTexture.Description.Height != ClientHeight) { if (SharedTexture != null) { SharedTexture.Dispose(); SharedTexture = null; } var colordesc = new Texture2DDescription { BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource, Format = Format.B8G8R8A8_UNorm, Width = ClientWidth, Height = ClientHeight, MipLevels = 1, SampleDescription = new SampleDescription(1, 0), Usage = ResourceUsage.Default, OptionFlags = ResourceOptionFlags.Shared, // needed for D3DImage CpuAccessFlags = CpuAccessFlags.None, ArraySize = 1 }; if (_dxRenderView != null) { _dxRenderView.Dispose(); _dxRenderView = null; } SharedTexture = new Texture2D(_dxDevice, colordesc); var descRtv = new RenderTargetViewDescription(); if (colordesc.SampleDescription.Count > 1) { descRtv.Dimension = RenderTargetViewDimension.Texture2DMultisampled; } else { descRtv.Dimension = RenderTargetViewDimension.Texture2D; } _dxRenderView = new RenderTargetView(_dxDevice, SharedTexture, descRtv); } if (DepthTexture == null || DepthTexture.Description.Width != ClientWidth || DepthTexture.Description.Height != ClientHeight) { if (DepthTexture != null) { DepthTexture.Dispose(); DepthTexture = null; } var depthDesc = new Texture2DDescription { BindFlags = BindFlags.DepthStencil, Format = Format.D32_Float_S8X24_UInt, Width = ClientWidth, Height = ClientHeight, MipLevels = 1, SampleDescription = new SampleDescription(1, 0), // not using multisampling Usage = ResourceUsage.Default, OptionFlags = ResourceOptionFlags.None, CpuAccessFlags = CpuAccessFlags.None, ArraySize = 1 }; // create depth texture DepthTexture = new Texture2D(_dxDevice, depthDesc); if (_dxDepthStencilView != null) { _dxDepthStencilView.Dispose(); _dxDepthStencilView = null; } var descDsv = new DepthStencilViewDescription(); descDsv.Format = depthDesc.Format; if (depthDesc.SampleDescription.Count > 1) { descDsv.Dimension = DepthStencilViewDimension.Texture2DMultisampled; } else { descDsv.Dimension = DepthStencilViewDimension.Texture2D; } descDsv.MipSlice = 0; // create depth/stencil view _dxDepthStencilView = new DepthStencilView(_dxDevice, DepthTexture, descDsv); } }