示例#1
0
        private bool disposedValue = false; // Для определения избыточных вызовов

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: освободить управляемое состояние (управляемые объекты).
                    inputLayout.Dispose();
                    inputSignature.Dispose();
                    triangleVertexBuffer.Dispose();
                    vertexShader.Dispose();
                    pixelShader.Dispose();
                    renderTargetView.Dispose();
                    swapChain.Dispose();
                    d3dDevice.Dispose();
                    d3dDeviceContext.Dispose();
                    renderForm.Dispose();
                    triangleVertexBuffer.Dispose();
                }

                // TODO: освободить неуправляемые ресурсы (неуправляемые объекты) и переопределить ниже метод завершения.
                // TODO: задать большим полям значение NULL.
                disposedValue = true;
            }
        }
示例#2
0
        protected internal override void OnDestroyed()
        {
            var pipelineStateCache = GetPipelineStateCache();

            if (blendState != null)
            {
                pipelineStateCache.BlendStateCache.Release(blendState);
            }
            if (rasterizerState != null)
            {
                pipelineStateCache.RasterizerStateCache.Release(rasterizerState);
            }
            if (depthStencilState != null)
            {
                pipelineStateCache.DepthStencilStateCache.Release(depthStencilState);
            }

            if (vertexShader != null)
            {
                pipelineStateCache.VertexShaderCache.Release(vertexShader);
            }
            if (pixelShader != null)
            {
                pipelineStateCache.PixelShaderCache.Release(pixelShader);
            }
            if (geometryShader != null)
            {
                pipelineStateCache.GeometryShaderCache.Release(geometryShader);
            }
            if (hullShader != null)
            {
                pipelineStateCache.HullShaderCache.Release(hullShader);
            }
            if (domainShader != null)
            {
                pipelineStateCache.DomainShaderCache.Release(domainShader);
            }
            if (computeShader != null)
            {
                pipelineStateCache.ComputeShaderCache.Release(computeShader);
            }

            inputLayout?.Dispose();

            base.OnDestroyed();
        }