Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 3
0
        /// <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;
        }
Exemplo n.º 4
0
        /// <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();
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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);
            }
        }