示例#1
0
		/// <summary>
		/// Initialize the rendering engine.
		/// </summary>
		/// <param name="autoCreateWindow">If true, a default window is created to serve as a rendering target.</param>
		/// <param name="windowTitle">Text to display on the window caption if not fullscreen.</param>
		/// <returns>A RenderWindow implementation specific to this RenderSystem.</returns>
		/// <remarks>All subclasses should call this method from within thier own intialize methods.</remarks>
		public override RenderWindow Initialize(bool autoCreateWindow, string windowTitle)
		{
			LogManager.Instance.Write("[XNA] : Subsystem Initializing");

#if !( XBOX || XBOX360 || SILVERLIGHT || WINDOWS_PHONE )
			WindowEventMonitor.Instance.MessagePump = Win32MessageHandling.MessagePump;
#endif
			_activeDriver = XnaHelper.GetDriverInfo()[ConfigOptions["Rendering Device"].Value];
			if (_activeDriver == null)
			{
				throw new ArgumentException("Problems finding requested Xna driver!");
			}

			RenderWindow renderWindow = null;

			// register the HLSL program manager
			//HighLevelGpuProgramManager.Instance.AddFactory(new HLSLProgramFactory());

			StateManager = new StateManagement();
			if (autoCreateWindow)
			{
#if SILVERLIGHT
				var width = (int)XnaRenderWindow.DrawingSurface.ActualWidth;
				var height = (int)XnaRenderWindow.DrawingSurface.ActualHeight;
#else
				var width = 800;
				var height = 600;
#endif
				var bpp = 32;
				var fullScreen = false;

				var optVM = ConfigOptions["Video Mode"];
				var vm = optVM.Value;
				width = int.Parse(vm.Substring(0, vm.IndexOf("x")));
				height = int.Parse(vm.Substring(vm.IndexOf("x") + 1, vm.IndexOf("@") - (vm.IndexOf("x") + 1)));
				bpp = int.Parse(vm.Substring(vm.IndexOf("@") + 1, vm.IndexOf("-") - (vm.IndexOf("@") + 1)));

#if !(XBOX || XBOX360)
				fullScreen = (ConfigOptions["Full Screen"].Value == "Yes");
#endif

				var miscParams = new NamedParameterList();
				miscParams.Add("title", windowTitle);
				miscParams.Add("colorDepth", bpp);
				//miscParams.Add( "FSAA", this._fsaaType );
				miscParams.Add("FSAAQuality", _fsaaQuality);
				miscParams.Add("vsync", _vSync);
				miscParams.Add("useNVPerfHUD", _useNVPerfHUD);

				// create the render window
				renderWindow = CreateRenderWindow("Main Window", width, height, fullScreen, miscParams);
			}

			new XnaMaterialManager();

			LogManager.Instance.Write("[XNA] : Subsystem Initialized successfully.");
			return renderWindow;
		}