예제 #1
0
        public ConfigDialog()
        {
            Axiom.Core.Root root = Axiom.Core.Root.Instance;
            _renderSystemList = new List<RenderSystem>(root.RenderSystems.Values);
            _currentSystem = _renderSystemList[ 0 ];
            _renderSystems = new ConfigOption("Render System", _currentSystem.Name, false);

            foreach ( RenderSystem rs in root.RenderSystems )
            {
                _renderSystems.PossibleValues.Add(_renderSystems.PossibleValues.Count, rs.ToString());
            }

            BuildOptions();
        }
예제 #2
0
		public override void AddConfig()
		{
			ConfigOption optFullsreen = new ConfigOption( "Full Screen", "No", false );
			ConfigOption optVideoMode = new ConfigOption( "Video Mode", "640 x 320", false );
			ConfigOption optDisplayFrequenzy = new ConfigOption( "Display Frequency", "60", false );
			ConfigOption optFSAA = new ConfigOption( "FSAA", "1", false );
			ConfigOption optRTTMode = new ConfigOption( "RTT Preferred Mode", "FBO", false );
			optFullsreen.PossibleValues.Add( 0, "Yes" );
			optFullsreen.PossibleValues.Add( 1, "No" );

			optFullsreen.Value = optFullsreen.PossibleValues[ 0 ];
			int index = 0;
			foreach ( KeyValuePair<Size, short> mode in _videoModes )
			{
				string resolution = mode.Key.Width + " x " + mode.Key.Height;
				if ( !optVideoMode.PossibleValues.ContainsValue( resolution ) )
					optVideoMode.PossibleValues.Add( index++, resolution );
			}
			index = 0;
			optVideoMode.Value = _currentMode.Key.Width + " x " + _currentMode.Key.Height;

			if ( _sampleLevels.Count > 0 )
			{
				foreach ( string fssa in _sampleLevels )
					optFSAA.PossibleValues.Add( index++, fssa );

				optFSAA.Value = optFSAA.PossibleValues[ 0 ];
			}

			optRTTMode.PossibleValues.Add( 0, "FBO" );
			optRTTMode.PossibleValues.Add( 1, "PBuffer" );
			optRTTMode.PossibleValues.Add( 2, "Copy" );
			optRTTMode.Value = optRTTMode.PossibleValues[ 0 ];

			_options[ optFullsreen.Name ] = optFullsreen;
			_options[ optVideoMode.Name ] = optVideoMode;
			_options[ optDisplayFrequenzy.Name ] = optDisplayFrequenzy;
			_options[ optFSAA.Name ] = optFSAA;
			_options[ optRTTMode.Name ] = optRTTMode;

			RefreshConfig();
		}
예제 #3
0
        /// <summary>
        ///		Query the display modes and deal with any other config options.
        /// </summary>
        public override void AddConfig()
        {
            ConfigOption optFullScreen = new ConfigOption("Full Screen", "No", false);
            ConfigOption optVideoMode = new ConfigOption("Video Mode", "800 x 600", false);
            ConfigOption optDisplayFrequency = new ConfigOption("Display Frequency", "", false);
            ConfigOption optColorDepth = new ConfigOption("Color Depth", "", false);
            ConfigOption optFSAA = new ConfigOption("FSAA", "0", false);
            ConfigOption optVSync = new ConfigOption("VSync", "No", false);
            ConfigOption optRTTMode = new ConfigOption("RTT Preferred Mode", "FBO", false);

            // Full Screen
            optFullScreen.PossibleValues.Add(0, "Yes");
            optFullScreen.PossibleValues.Add(1, "No");

            // Video Mode

            #region Video Mode

            Gdi.DEVMODE setting;
            int i = 0;
            int width, height, bpp, freq;
            // get the available OpenGL resolutions
            bool more = User.EnumDisplaySettings(null, i++, out setting);
            // add the resolutions to the config
            while (more)
            {
                _deviceModes.Add(setting);

                width = setting.dmPelsWidth;
                height = setting.dmPelsHeight;
                bpp = setting.dmBitsPerPel;

                // filter out the lower resolutions and dupe frequencies
                if (bpp >= 16 && height >= 480)
                {
                    string query = string.Format("{0} x {1}", width, height);

                    if (!optVideoMode.PossibleValues.Values.Contains(query))
                    {
                        // add a new row to the display settings table
                        optVideoMode.PossibleValues.Add(i, query);
                    }
                    if (optVideoMode.PossibleValues.Count == 1 && String.IsNullOrEmpty(optVideoMode.Value))
                    {
                        optVideoMode.Value = query;
                    }
                }
                // grab the current display settings
                more = User.EnumDisplaySettings(null, i++, out setting);
            }

            #endregion Video Mode

            // FSAA
            foreach (int level in _fsaaLevels)
            {
                optFSAA.PossibleValues.Add(level, level.ToString());
            }

            // VSync
            optVSync.PossibleValues.Add(0, "Yes");
            optVSync.PossibleValues.Add(1, "No");

            // RTTMode
            optRTTMode.PossibleValues.Add(0, "FBO");
            optRTTMode.PossibleValues.Add(1, "PBuffer");
            optRTTMode.PossibleValues.Add(2, "Copy");

            optFullScreen.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optVideoMode.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optDisplayFrequency.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optFSAA.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optVSync.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optColorDepth.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);
            optRTTMode.ConfigValueChanged += new ConfigOption<string>.ValueChanged(_configOptionChanged);

            ConfigOptions.Add(optVideoMode);
            ConfigOptions.Add(optColorDepth);
            ConfigOptions.Add(optDisplayFrequency);
            ConfigOptions.Add(optFullScreen);
            ConfigOptions.Add(optFSAA);
            ConfigOptions.Add(optVSync);
            ConfigOptions.Add(optRTTMode);

            _refreshConfig();
        }
예제 #4
0
        private void InitConfigOptions()
        {
            var optDevice = new ConfigOption( "Rendering Device", "", false );

            var optVideoMode = new ConfigOption("Video Mode", "800 x 600 @ 32-bit color", false);

            var optFullScreen = new ConfigOption("Full Screen", "No", false);
            optFullScreen.PossibleValues.Add(0, "Yes");
            optFullScreen.PossibleValues.Add(1, "No");

            var optResourceCeationPolicy = new ConfigOption( "Resource Creation Policy", "", false );
            optResourceCeationPolicy.PossibleValues.Add( 0, "Create on all devices" );
            optResourceCeationPolicy.PossibleValues.Add( 1, "Create on active device" );
            switch ( _resourceManager.CreationPolicy )
            {
                case D3D9ResourceManager.ResourceCreationPolicy.CreateOnActiveDevice:
                    optResourceCeationPolicy.Value = "Create on active device";
                    break;
                case D3D9ResourceManager.ResourceCreationPolicy.CreateOnAllDevices:
                    optResourceCeationPolicy.Value = "Create on all devices";
                    break;
                default:
                    optResourceCeationPolicy.Value = "N/A";
                    break;
            }

            var driverList = D3DHelper.GetDriverInfo(_pD3D);
            foreach (var driver in driverList)
            {
                optDevice.PossibleValues.Add(driver.AdapterNumber, driver.DriverDescription);
            }
            // Make first one default
            optDevice.Value = driverList.First().DriverDescription;

            var optVSync = new ConfigOption("VSync", "No", false);
            optVSync.PossibleValues.Add(0, "Yes");
            optVSync.PossibleValues.Add(1, "No");

            var optVSyncInterval = new ConfigOption( "VSync Interval", "1", false );
            optVSyncInterval.PossibleValues.Add(0, "1");
            optVSyncInterval.PossibleValues.Add(1, "2");
            optVSyncInterval.PossibleValues.Add(3, "3");
            optVSyncInterval.PossibleValues.Add(4, "4");

            var optAa = new ConfigOption("FSAA", "None", false);
            optAa.PossibleValues.Add(0, "None");

            var optFPUMode = new ConfigOption("Floating-point mode", "Fastest", false);
#if AXIOM_DOUBLE_PRECISION
            optFPUMode.Value = "Consistent";
#else
            optFPUMode.Value = "Fastest";
#endif
            optFPUMode.PossibleValues.Clear();
            optFPUMode.PossibleValues.Add(0, "Fastest");
            optFPUMode.PossibleValues.Add(1, "Consistent");

            var optNVPerfHUD = new ConfigOption( "Allow NVPerfHUD", "No", false );
            optNVPerfHUD.PossibleValues.Add( 0, "Yes" );
            optNVPerfHUD.PossibleValues.Add( 1, "No" );

            var optSRGB = new ConfigOption( "sRGB Gamma Conversion", "No", false );
            optSRGB.PossibleValues.Add(0, "Yes");
            optSRGB.PossibleValues.Add(1, "No");

            var optMultiDeviceMemHint = new ConfigOption( "Multi device memory hint", "Use minimum system memory", false );
            optMultiDeviceMemHint.PossibleValues.Add(0, "Use minimum system memory");
            optMultiDeviceMemHint.PossibleValues.Add(1, "Auto hardware buffers management");

            // RT options ommited here 

            // Axiom specific registering
            optDevice.ConfigValueChanged += ConfigOptionChanged;
            optVideoMode.ConfigValueChanged += ConfigOptionChanged;
            optFullScreen.ConfigValueChanged += ConfigOptionChanged;
            optResourceCeationPolicy.ConfigValueChanged += ConfigOptionChanged;
            optVSync.ConfigValueChanged += ConfigOptionChanged;
            optVSyncInterval.ConfigValueChanged += ConfigOptionChanged;
            optAa.ConfigValueChanged += ConfigOptionChanged;
            optFPUMode.ConfigValueChanged += ConfigOptionChanged;
            optNVPerfHUD.ConfigValueChanged += ConfigOptionChanged;
            optSRGB.ConfigValueChanged += ConfigOptionChanged;
            optMultiDeviceMemHint.ConfigValueChanged += ConfigOptionChanged;

            ConfigOptions.Add( optDevice );
            ConfigOptions.Add( optVideoMode );
            ConfigOptions.Add( optFullScreen );
            ConfigOptions.Add( optResourceCeationPolicy );
            ConfigOptions.Add( optVSync );
            ConfigOptions.Add( optVSyncInterval );
            ConfigOptions.Add( optAa );
            ConfigOptions.Add( optFPUMode );
            ConfigOptions.Add( optNVPerfHUD );
            ConfigOptions.Add( optSRGB );
            ConfigOptions.Add( optMultiDeviceMemHint );
            // Axiom specific registering

            RefreshD3DSettings();
        }
예제 #5
0
		/*
				private void _setFSAA( XFG.MultiSampleType fsaa, int level )
				{
					if ( _device == null )
					{
						_fsaaType = fsaa;
						_fsaaQuality = level;
					}
				}
		*/

		private void _initConfigOptions()
		{
			var optDevice = new ConfigOption("Rendering Device", "", false);
			var optVideoMode = new ConfigOption("Video Mode", "800 x 600 @ 32-bit color", false);
			var optFullScreen = new ConfigOption("Full Screen", "No", false);
			var optVSync = new ConfigOption("VSync", "No", false);
			var optAA = new ConfigOption("Anti aliasing", "None", false);
			var optFPUMode = new ConfigOption("Floating-point mode", "Fastest", false);
			var optNVPerfHUD = new ConfigOption("Allow NVPerfHUD", "No", false);
			var optSaveShaders = new ConfigOption("Save Generated Shaders", "No", false);
			var optUseCP = new ConfigOption("Use Content Pipeline", "No", false);

			optDevice.PossibleValues.Clear();

			var driverList = XnaHelper.GetDriverInfo();
			foreach (var driver in driverList)
			{
				if (!optDevice.PossibleValues.ContainsKey(driver.AdapterNumber))
				{
					optDevice.PossibleValues.Add(driver.AdapterNumber, driver.Description);
				}
			}
			if (driverList.Count > 0)
				optDevice.Value = driverList[0].Description;
			else
				optDevice.Value = "No Device";

			optFullScreen.PossibleValues.Add(0, "Yes");
			optFullScreen.PossibleValues.Add(1, "No");

			optVSync.PossibleValues.Add(0, "Yes");
			optVSync.PossibleValues.Add(1, "No");

			optAA.PossibleValues.Add(0, "None");

			optFPUMode.PossibleValues.Clear();
			optFPUMode.PossibleValues.Add(0, "Fastest");
			optFPUMode.PossibleValues.Add(1, "Consistent");

			optNVPerfHUD.PossibleValues.Add(0, "Yes");
			optNVPerfHUD.PossibleValues.Add(1, "No");

			optSaveShaders.PossibleValues.Add(0, "Yes");
			optSaveShaders.PossibleValues.Add(1, "No");

			optUseCP.PossibleValues.Add(0, "Yes");
			optUseCP.PossibleValues.Add(1, "No");

			optFPUMode.ConfigValueChanged += _configOptionChanged;
			optAA.ConfigValueChanged += _configOptionChanged;
			optVSync.ConfigValueChanged += _configOptionChanged;
			optFullScreen.ConfigValueChanged += _configOptionChanged;
			optVideoMode.ConfigValueChanged += _configOptionChanged;
			optDevice.ConfigValueChanged += _configOptionChanged;
			optNVPerfHUD.ConfigValueChanged += _configOptionChanged;
			optSaveShaders.ConfigValueChanged += _configOptionChanged;
			optUseCP.ConfigValueChanged += _configOptionChanged;

			ConfigOptions.Add(optDevice);
			ConfigOptions.Add(optVideoMode);
			ConfigOptions.Add(optFullScreen);
			ConfigOptions.Add(optVSync);
			ConfigOptions.Add(optAA);
			ConfigOptions.Add(optFPUMode);
			ConfigOptions.Add(optNVPerfHUD);
			ConfigOptions.Add(optSaveShaders);
			ConfigOptions.Add(optUseCP);

			_refreshXnaSettings();
		}
예제 #6
0
		/// <summary>
		///
		/// </summary>
		public override void AddConfig()
		{
			var optFullScreen = new ConfigOption( "Full Screen", "No", false );
			var optVideoMode = new ConfigOption( "Video Mode", "800 x 600", false );
			var optDisplayFrequency = new ConfigOption( "Display Frequency", "", false );
			var optColorDepth = new ConfigOption( "Color Depth", "", false );
			var optFSAA = new ConfigOption( "FSAA", "0", false );
			var optVSync = new ConfigOption( "VSync", "No", false );
			var optRTTMode = new ConfigOption( "RTT Preferred Mode", "FBO", false );

			// Full Screen
			optFullScreen.PossibleValues.Add( 0, "Yes" );
			optFullScreen.PossibleValues.Add( 1, "No" );

			// Video Mode

			#region Video Modes

			// get the available OpenGL resolutions
			DisplayDevice dev = DisplayDevice.Default;

			// add the resolutions to the config
			for ( int q = 0; q < dev.AvailableResolutions.Count; q++ )
			{
				if ( dev.AvailableResolutions[ q ].BitsPerPixel >= 16 )
				{
					int width = dev.AvailableResolutions[ q ].Width;
					int height = dev.AvailableResolutions[ q ].Height;

					// filter out the lower resolutions and dupe frequencies
					if ( width >= 640 && height >= 480 )
					{
						string query = string.Format( "{0} x {1}", width, height );

						if ( !optVideoMode.PossibleValues.Values.Contains( query ) )
						{
							// add a new row to the display settings table
							optVideoMode.PossibleValues.Add( optVideoMode.PossibleValues.Count, query );
						}
						if ( optVideoMode.PossibleValues.Count == 1 && String.IsNullOrEmpty( optVideoMode.Value ) )
						{
							optVideoMode.Value = query;
						}
					}
				}
			}

			#endregion Video Modes

			// FSAA
			GetFSAALevels();
			foreach ( int level in this._fsaaLevels )
			{
				optFSAA.PossibleValues.Add( level, level.ToString() );
			}

			// VSync
			optVSync.PossibleValues.Add( 0, "Yes" );
			optVSync.PossibleValues.Add( 1, "No" );

			// RTTMode
			optRTTMode.PossibleValues.Add( 0, "FBO" );
			optRTTMode.PossibleValues.Add( 1, "PBuffer" );
			optRTTMode.PossibleValues.Add( 2, "Copy" );

			optFullScreen.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optVideoMode.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optDisplayFrequency.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optFSAA.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optVSync.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optColorDepth.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );
			optRTTMode.ConfigValueChanged += new ConfigOption<string>.ValueChanged( _configOptionChanged );

			ConfigOptions.Add( optVideoMode );
			ConfigOptions.Add( optColorDepth );
			ConfigOptions.Add( optDisplayFrequency );
			ConfigOptions.Add( optFullScreen );
			ConfigOptions.Add( optFSAA );
			ConfigOptions.Add( optVSync );
			ConfigOptions.Add( optRTTMode );

			_refreshConfig();
		}
        /// <summary>
        ///		Called in constructor to init configuration.
        /// </summary>
        private void InitConfigOptions()
        {
            Driver driver = D3DHelper.GetDriverInfo();

            foreach (VideoMode mode in driver.VideoModes)
            {
                // add a new row to the display settings table
                displayConfig.FullscreenModes.Add(new Axiom.Configuration.DisplayMode(mode.Width, mode.Height, mode.ColorDepth, true));
            }

            ConfigOption optDevice = new ConfigOption();
            ConfigOption optVideoMode = new ConfigOption();
            ConfigOption optFullScreen = new ConfigOption();
            ConfigOption optVSync = new ConfigOption();
            ConfigOption optAA = new ConfigOption();
            ConfigOption optNVPerfHUD = new ConfigOption();

            optDevice.name = "Rendering Device";

            optVideoMode.name = "Video Mode";
            optVideoMode.currentValue = "800 x 600 @ 32-bit color";
            foreach (VideoMode mode in driver.VideoModes)
                optVideoMode.possibleValues.Add(mode.ToString());

            optFullScreen.name = "Full Screen";
            optFullScreen.possibleValues.Add("Yes");
            optFullScreen.possibleValues.Add("No");
            optFullScreen.currentValue = "Yes";

            optVSync.name = "VSync";
            optVSync.possibleValues.Add("Yes");
            optVSync.possibleValues.Add("No");
            optVSync.currentValue = "Yes";

            optAA.name = "Anti Aliasing";
            optAA.possibleValues.Add("None");
            optAA.currentValue = "None";
            //
            // Query DirectX to get the list of valid multisample quality levels.
            // I am currently limiting us to the Non-maskable types, since we don't
            // have any support at the moment for an app to enable multisample masking,
            // and so providing both masking and non-masking types would just provide
            // redundant, confusing, and possibly slower options to the user.
            //
            // Really, the world creator should decide whether they need maskable
            // multisampling for their visual effects, so the choice of maskable
            // or non-maskable should eventually be available through scripting
            // rather than at the request of the user.
            //
            AdapterDetails details = D3D.Manager.Adapters[driver.AdapterNumber].Information;

            int result;
            int maxAAQuality;
            bool ret;
            // Configuring anti-aliasing before the render target has been created is problematic, since we don't know
            // for sure the surface format or whether we are windowed or not.  We will make guesses and hope for the best...
            ret = D3D.Manager.CheckDeviceMultiSampleType(driver.AdapterNumber, DeviceType.Hardware, Format.X8R8G8B8, false, MultiSampleType.NonMaskable, out result, out maxAAQuality);
            if (ret && (result == (int)ResultCode.Success))
            {
                for (int i = 0; i < maxAAQuality; i++)
                {
                    optAA.possibleValues.Add("Quality " + (i + 1).ToString());
                }
            }

            optNVPerfHUD.name = "Allow NVPerfHUD";
            optNVPerfHUD.possibleValues.Add("Yes");
            optNVPerfHUD.possibleValues.Add("No");
            optNVPerfHUD.currentValue = "No";

            // options[optDevice.name] = optDevice.currentValue;
            options[optVideoMode.name] = optVideoMode;
            options[optFullScreen.name] = optFullScreen;
            options[optVSync.name] = optVSync;
            options[optAA.name] = optAA;
            options[optNVPerfHUD.name] = optNVPerfHUD;
        }
예제 #8
0
        private bool ProcessKey( int key )
        {

            if ( key == -1 ) //ESCAPE
            {
                if ( _currentOption == null )
                {
                    // ESC at main menu
                    _result = DialogResult.Cancel;
                    return false;
                }
                else
                {
                    // go back to main menu
                    _currentOption = null;
                    return true;
                }
            }

            if ( key == -2 ) //ENTER
            {
                if ( _currentOption == null )
                {
                    // at main menu
                    if ( _numericInput == -1 )
                    {
                        Axiom.Core.Root.Instance.RenderSystem = _currentSystem;

                        _result = DialogResult.Ok;
                        return false;
                    }
                    else if ( _numericInput >= 0 && _numericInput < _menuItems.Count )
                    {
                        _currentOption = (ConfigOption)_menuItems[ _numericInput ];
                        return true;
                    }

                    return true;
                }
                else if ( _numericInput >= 0 && _numericInput < _currentOption.PossibleValues.Count )
                {
                    // at options menu and having an entered number
                    _currentOption.Value = _currentOption.PossibleValues.Values[ _numericInput ].ToString();

                    if ( _currentOption.Name == "Render System" ) // About to change Renderers
                    {
                        _renderSystems = _currentOption;
                        _currentSystem = _renderSystemList[ _numericInput ];

                        BuildOptions();

                        _currentOption = null;

                        return true;
                    }

                    _currentOption = null;
                }

                return true;
            }

            return true;
        }