public void SaveGraphicsProfile(GraphicsProfile graphicsProfile)
        {
            if (_settingsStorage == null)
            {
                return;
            }

            // Serialize the graphicsProfile data to string and store that into applications settings
            _settingsStorage.UserGraphicProfileText = GraphicsProfileSerializer.Serialize(graphicsProfile);
        }
        public void InitializeGraphicProfiles()
        {
            GraphicsProfile serializedGraphicsProfile = null;

            // First check if DXEngineGraphicProfile is set in application config file (this overrides saved setting)
            string dxEngineGraphicProfileText;

            if (_settingsStorage != null)
            {
                dxEngineGraphicProfileText = _settingsStorage.OverrideGraphicProfileText;
            }
            else
            {
                dxEngineGraphicProfileText = null;
            }

            if (!string.IsNullOrEmpty(dxEngineGraphicProfileText))
            {
                try
                {
                    serializedGraphicsProfile = GraphicsProfileSerializer.Deserialize(dxEngineGraphicProfileText, SystemCapabilities.AllAdapters, throwExceptions: false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Cannot serialize the GraphicsProfile setting in config file (appSettings is DXEngineGraphicProfile).\r\n\r\nError:\r\n" + ex.Message);
                }
            }



            // If GraphicsProfile is not yet set, read the GraphicsProfile setting saved to application's settings
            if (serializedGraphicsProfile == null && _settingsStorage != null)
            {
                dxEngineGraphicProfileText = _settingsStorage.UserGraphicProfileText;

                if (!string.IsNullOrEmpty(dxEngineGraphicProfileText))
                {
                    try
                    {
                        serializedGraphicsProfile = GraphicsProfileSerializer.Deserialize(dxEngineGraphicProfileText, SystemCapabilities.AllAdapters, throwExceptions: false);
                    }
                    catch
                    {
                        // UH - this should not happen (maybe the  GraphicsProfile was serialized with previous version)
                    }
                }
            }

            if (serializedGraphicsProfile != null)
            {
                // CreateArrayOfRecommendedGraphicsProfiles creates an array of GraphicsProfile where the first GraphicsProfile is serializedGraphicsProfile.
                // The following graphics profiles in the list are fallback GraphicsProfiles that can be used if serializedGraphicsProfile cannot be used (for example software rendering and wpf 3D)
                this.GraphicsProfiles = SystemCapabilities.CreateArrayOfRecommendedGraphicsProfiles(serializedGraphicsProfile);
            }
            else
            {
                // GraphicsProfile still not set - probably the first run or user never changed graphics profile manually
                // Use the recommended settings for this computer

                this.GraphicsProfiles = DXEngineSettings.Current.SystemCapabilities.GetRecommendedGraphicsProfiles();
            }
        }