public override RenderWindow Initialize(bool autoCreateWindow, string windowTitle)
{
LogManager.Instance.Write("[D3D9] : Subsystem Initializing");
// Axiom specific
WindowEventMonitor.Instance.MessagePump = Win32MessageHandling.MessagePump;
// Init using current settings
_activeD3DDriver = D3DHelper.GetDriverInfo(_pD3D)[ConfigOptions["Rendering Device"].Value];
if (_activeD3DDriver == null)
throw new ArgumentException("Problems finding requested Direct3D driver!");
driverVersion.Major = _activeD3DDriver.AdapterIdentifier.DriverVersion.Major;
driverVersion.Minor = _activeD3DDriver.AdapterIdentifier.DriverVersion.Minor;
driverVersion.Release = _activeD3DDriver.AdapterIdentifier.DriverVersion.MajorRevision;
driverVersion.Build = _activeD3DDriver.AdapterIdentifier.DriverVersion.MinorRevision;
// Create the device manager.
_deviceManager = new D3D9DeviceManager();
// Create the texture manager for use by others
textureManager = new D3DTextureManager();
// Also create hardware buffer manager
_hardwareBufferManager = new D3DHardwareBufferManager();
// Create the GPU program manager
_gpuProgramManager = new D3DGpuProgramManager();
_hlslProgramFactory = new HLSLProgramFactory();
RenderWindow renderWindow = null;
if (autoCreateWindow)
{
var fullScreen = (ConfigOptions["Full Screen"].Value == "Yes");
var optVm = ConfigOptions["Video Mode"];
var vm = optVm.Value;
var width = int.Parse(vm.Substring(0, vm.IndexOf("x")));
var height = int.Parse(vm.Substring(vm.IndexOf("x") + 1, vm.IndexOf("@") - (vm.IndexOf("x") + 1)));
var bpp = int.Parse(vm.Substring(vm.IndexOf("@") + 1, vm.IndexOf("-") - (vm.IndexOf("@") + 1)));
// sRGB window option
ConfigOption opt;
var hwGamma = ConfigOptions.TryGetValue("sRGB Gamma Conversion", out opt) && (opt.Value == "Yes");
var miscParams = new NamedParameterList();
miscParams.Add("title", windowTitle); // Axiom only?
miscParams.Add("colorDepth", bpp);
miscParams.Add("FSAA", _fsaaSamples);
miscParams.Add("FSAAHint", _fsaaHint);
miscParams.Add("vsync", vSync);
miscParams.Add("vsyncInterval", vSyncInterval);
miscParams.Add("useNVPerfHUD", _useNVPerfHUD);
miscParams.Add("gamma", hwGamma);
miscParams.Add("monitorIndex", _activeD3DDriver.AdapterNumber);
// create the render window
renderWindow = CreateRenderWindow("Main Window", width, height, fullScreen, miscParams);
// If we have 16bit depth buffer enable w-buffering.
Debug.Assert(renderWindow != null);
wBuffer = (renderWindow.ColorDepth == 16);
}
LogManager.Instance.Write("***************************************");
LogManager.Instance.Write("*** D3D9 : Subsystem Initialized OK ***");
LogManager.Instance.Write("***************************************");
// call superclass method
base.Initialize( autoCreateWindow, windowTitle );
// Configure SlimDX
SlimDX.Configuration.ThrowOnError = true;
SlimDX.Configuration.AddResultWatch(ResultCode.DeviceLost, ResultWatchFlags.AlwaysIgnore);
SlimDX.Configuration.AddResultWatch(ResultCode.WasStillDrawing, ResultWatchFlags.AlwaysIgnore);
#if DEBUG
SlimDX.Configuration.DetectDoubleDispose = false;
SlimDX.Configuration.EnableObjectTracking = true;
#else
SlimDX.Configuration.DetectDoubleDispose = false;
SlimDX.Configuration.EnableObjectTracking = false;
#endif
return renderWindow;
}