/// <summary>
        /// Applies the given size.
        /// </summary>
        /// <param name="renderState">The render state used for creating all resources.</param>
        public void ApplySize(RenderState renderState)
        {
            ViewInformation           viewInfo   = renderState.ViewInformation;
            GraphicsViewConfiguration viewConfig = viewInfo.ViewConfiguration;

            // Get current view size and antialiasing settings
            Size2 currentViewSize            = viewInfo.CurrentViewSize;
            bool  currentAntialiasingEnabled = viewConfig.AntialiasingEnabled;
            AntialiasingQualityLevel currentAntialiasingQuality = viewConfig.AntialiasingQuality;

            if ((m_width != currentViewSize.Width) ||
                (m_heigth != currentViewSize.Height) ||
                (m_antialiasingEnabled != currentAntialiasingEnabled) ||
                (m_antialiasingQuality != currentAntialiasingQuality))
            {
                // Dispose color-buffer resources
                GraphicsHelper.SafeDispose(ref m_colorBuffer);
                GraphicsHelper.SafeDispose(ref m_colorBufferRenderTargetView);
                GraphicsHelper.SafeDispose(ref m_colorBufferShaderResourceView);
                if (m_shaderResourceCreated)
                {
                    GraphicsHelper.SafeDispose(ref m_colorBufferShaderResource);
                }

                // Dispose depth-buffer resources
                GraphicsHelper.SafeDispose(ref m_depthBufferView);
                GraphicsHelper.SafeDispose(ref m_depthBuffer);

                // Dispose object-id buffer
                GraphicsHelper.SafeDispose(ref m_objectIDBufferRenderTargetView);
                GraphicsHelper.SafeDispose(ref m_objectIDBuffer);

                // Dispose normal-depth resources
                GraphicsHelper.SafeDispose(ref m_normalDepthBuffer);
                GraphicsHelper.SafeDispose(ref m_normalDepthBufferRenderTargetView);
                GraphicsHelper.SafeDispose(ref m_normalDepthBufferShaderResourceView);
                if (m_shaderResourceCreated)
                {
                    GraphicsHelper.SafeDispose(ref m_normalDepthBufferShaderResource);
                }

                // Create color-buffer resources
                if (m_creationMode.HasFlag(RenderTargetCreationMode.Color))
                {
                    m_colorBuffer = GraphicsHelper.CreateRenderTargetTexture(
                        renderState.Device, currentViewSize.Width, currentViewSize.Height, renderState.ViewInformation.ViewConfiguration);
                    m_colorBufferShaderResource = m_colorBuffer;
                    if (renderState.ViewInformation.ViewConfiguration.AntialiasingEnabled)
                    {
                        m_colorBufferShaderResource = GraphicsHelper.CreateTexture(renderState.Device, currentViewSize.Width, currentViewSize.Height);
                        m_shaderResourceCreated     = true;
                    }
                    else
                    {
                        m_shaderResourceCreated = false;
                    }
                    m_colorBufferRenderTargetView   = new D3D11.RenderTargetView(renderState.Device.DeviceD3D11_1, m_colorBuffer);
                    m_colorBufferShaderResourceView = new D3D11.ShaderResourceView(renderState.Device.DeviceD3D11_1, m_colorBufferShaderResource);
                }

                // Create depth-buffer resources
                if (m_creationMode.HasFlag(RenderTargetCreationMode.Depth))
                {
                    m_depthBuffer = GraphicsHelper.CreateDepthBufferTexture(
                        renderState.Device, currentViewSize.Width, currentViewSize.Height, renderState.ViewInformation.ViewConfiguration);
                    m_depthBufferView = GraphicsHelper.CreateDepthBufferView(renderState.Device, m_depthBuffer);
                }

                // Create object-id resources
                if (m_creationMode.HasFlag(RenderTargetCreationMode.ObjectID))
                {
                    m_objectIDBuffer = GraphicsHelper.CreateRenderTargetTextureObjectIDs(
                        renderState.Device, currentViewSize.Width, currentViewSize.Height, renderState.ViewInformation.ViewConfiguration);
                    m_objectIDBufferRenderTargetView = new D3D11.RenderTargetView(renderState.Device.DeviceD3D11_1, m_objectIDBuffer);
                }

                // Create normal-depth buffer resources
                if (m_creationMode.HasFlag(RenderTargetCreationMode.NormalDepth))
                {
                    m_normalDepthBuffer = GraphicsHelper.CreateRenderTargetTextureNormalDepth(
                        renderState.Device, currentViewSize.Width, currentViewSize.Height, renderState.ViewInformation.ViewConfiguration);
                    m_normalDepthBufferShaderResource = m_normalDepthBuffer;
                    if (m_shaderResourceCreated)
                    {
                        m_normalDepthBufferShaderResource = GraphicsHelper.CreateTexture(
                            renderState.Device, currentViewSize.Width, currentViewSize.Height, GraphicsHelper.DEFAULT_TEXTURE_FORMAT_NORMAL_DEPTH);
                    }
                    m_normalDepthBufferRenderTargetView   = new D3D11.RenderTargetView(renderState.Device.DeviceD3D11_1, m_normalDepthBuffer);
                    m_normalDepthBufferShaderResourceView = new D3D11.ShaderResourceView(renderState.Device.DeviceD3D11_1, m_normalDepthBufferShaderResource);
                }

                // Remember values
                m_width  = currentViewSize.Width;
                m_heigth = currentViewSize.Height;
                m_antialiasingEnabled = currentAntialiasingEnabled;
                m_antialiasingQuality = currentAntialiasingQuality;
                m_viewportF           = renderState.Viewport;
            }
        }