/// <summary> /// Get the sample description for the given quality level. /// </summary> /// <param name="qualityLevel">The quality level for which a sample description is needed.</param> internal DXGI.SampleDescription GetSampleDescription(AntialiasingQualityLevel qualityLevel) { switch (qualityLevel) { case AntialiasingQualityLevel.Low: return(m_antialiasingConfigLow); case AntialiasingQualityLevel.Medium: return(m_antialiasingConfigMedium); case AntialiasingQualityLevel.High: return(m_antialiasingConfigHigh); } return(new DXGI.SampleDescription(1, 0)); }
/// <summary> /// Applies the given size. /// </summary> /// <param name="renderState">The render state used for creating all resources.</param> public void ApplySize(RenderState renderState) { var viewInfo = renderState.ViewInformation !; var viewConfig = viewInfo.ViewConfiguration; // Get current view size and antialiasing settings var currentViewSize = viewInfo.CurrentViewSize; var currentAntialiasingEnabled = viewConfig.AntialiasingEnabled; var currentAntialiasingQuality = viewConfig.AntialiasingQuality; if (_width != currentViewSize.Width || _height != currentViewSize.Height || _antialiasingEnabled != currentAntialiasingEnabled || _antialiasingQuality != currentAntialiasingQuality || _forceRecreateResources) { _forceRecreateResources = false; // Dispose color-buffer resources SeeingSharpUtil.SafeDispose(ref _colorBuffer); SeeingSharpUtil.SafeDispose(ref _colorBufferRenderTargetView); SeeingSharpUtil.SafeDispose(ref _colorBufferShaderResourceView); if (_shaderResourceCreated) { SeeingSharpUtil.SafeDispose(ref _colorBufferShaderResource); } // Dispose depth-buffer resources SeeingSharpUtil.SafeDispose(ref _depthBufferView); SeeingSharpUtil.SafeDispose(ref _depthBuffer); // Dispose object-id buffer SeeingSharpUtil.SafeDispose(ref _objectIdBufferRenderTargetView); SeeingSharpUtil.SafeDispose(ref _objectIdBuffer); // Dispose normal-depth resources SeeingSharpUtil.SafeDispose(ref _normalDepthBuffer); SeeingSharpUtil.SafeDispose(ref _normalDepthBufferRenderTargetView); SeeingSharpUtil.SafeDispose(ref _normalDepthBufferShaderResourceView); if (_shaderResourceCreated) { SeeingSharpUtil.SafeDispose(ref _normalDepthBufferShaderResource); } // Create color-buffer resources if (_creationMode.HasFlag(RenderTargetCreationMode.Color)) { _colorBuffer = GraphicsHelper.Internals.CreateRenderTargetTexture( renderState.Device, currentViewSize.Width, currentViewSize.Height, viewInfo.ViewConfiguration); _colorBufferShaderResource = _colorBuffer; if (viewInfo.ViewConfiguration.AntialiasingEnabled) { _colorBufferShaderResource = GraphicsHelper.Internals.CreateTexture(renderState.Device, currentViewSize.Width, currentViewSize.Height); _shaderResourceCreated = true; } else { _shaderResourceCreated = false; } _colorBufferRenderTargetView = renderState.Device.DeviceD3D11_1.CreateRenderTargetView(_colorBuffer); _colorBufferShaderResourceView = renderState.Device.DeviceD3D11_1.CreateShaderResourceView(_colorBufferShaderResource); } // Create depth-buffer resources if (_creationMode.HasFlag(RenderTargetCreationMode.Depth)) { _depthBuffer = GraphicsHelper.Internals.CreateDepthBufferTexture( renderState.Device, currentViewSize.Width, currentViewSize.Height, viewInfo.ViewConfiguration); _depthBufferView = GraphicsHelper.Internals.CreateDepthBufferView(renderState.Device, _depthBuffer); } // Create object-id resources if (_creationMode.HasFlag(RenderTargetCreationMode.ObjectId)) { _objectIdBuffer = GraphicsHelper.Internals.CreateRenderTargetTextureObjectIds( renderState.Device, currentViewSize.Width, currentViewSize.Height, viewInfo.ViewConfiguration); _objectIdBufferRenderTargetView = renderState.Device.DeviceD3D11_1.CreateRenderTargetView(_objectIdBuffer); } // Create normal-depth buffer resources if (_creationMode.HasFlag(RenderTargetCreationMode.NormalDepth)) { _normalDepthBuffer = GraphicsHelper.Internals.CreateRenderTargetTextureNormalDepth( renderState.Device, currentViewSize.Width, currentViewSize.Height, viewInfo.ViewConfiguration); _normalDepthBufferShaderResource = _normalDepthBuffer; if (_shaderResourceCreated) { _normalDepthBufferShaderResource = GraphicsHelper.Internals.CreateTexture( renderState.Device, currentViewSize.Width, currentViewSize.Height, GraphicsHelper.Internals.DEFAULT_TEXTURE_FORMAT_NORMAL_DEPTH); } _normalDepthBufferRenderTargetView = renderState.Device.DeviceD3D11_1.CreateRenderTargetView(_normalDepthBuffer); _normalDepthBufferShaderResourceView = renderState.Device.DeviceD3D11_1.CreateShaderResourceView(_normalDepthBufferShaderResource); } // Remember values _width = currentViewSize.Width; _height = currentViewSize.Height; _antialiasingEnabled = currentAntialiasingEnabled; _antialiasingQuality = currentAntialiasingQuality; _viewportF = renderState.Viewport; } }
/// <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; } }
public SampleDescription GetSampleDescription(AntialiasingQualityLevel qualityLevel) { return(_host.GetSampleDescription(qualityLevel)); }