using System;\r
using System.ComponentModel;\r
using System.Drawing;\r
+using System.Runtime.InteropServices;\r
using System.Text;\r
using System.Threading;\r
using System.Windows.Forms;\r
-using SlimDX;\r
-using SlimDX.Direct3D9;\r
-using SlimDX.DXGI;\r
+using SharpDX;\r
+using SharpDX.Direct3D9;\r
+using SharpDX.DXGI;\r
using System.Diagnostics;\r
+\r
+using Rectangle = System.Drawing.Rectangle;\r
+\r
namespace SampleFramework\r
{\r
/// <summary>\r
\r
DeviceSettings validSettings = DeviceSettings.FindValidSettings( settings );\r
\r
- validSettings.Direct3D9.PresentParameters.DeviceWindowHandle = game.Window.Handle;\r
+ var pp = validSettings.Direct3D9.PresentParameters;\r
+ pp.DeviceWindowHandle = game.Window.Handle;\r
+ validSettings.Direct3D9.PresentParameters = pp;\r
\r
CreateDevice( validSettings );\r
}\r
}\r
\r
// check if the device can be reset, or if we need to completely recreate it\r
- Result result = SlimDX.Direct3D9.ResultCode.Success;\r
+ Result result = SharpDX.Direct3D9.ResultCode.Success;\r
bool canReset = CanDeviceBeReset(oldSettings, settings);\r
if (canReset)\r
result = ResetDevice();\r
\r
- if (result == SlimDX.Direct3D9.ResultCode.DeviceLost)\r
+ if (result == SharpDX.Direct3D9.ResultCode.DeviceLost)\r
deviceLost = true;\r
- else if (!canReset || result.IsFailure)\r
+ else if (!canReset || result.Failure)\r
{\r
if (oldSettings != null)\r
ReleaseDevice();\r
newSettings.BackBufferHeight = 0;\r
if (newSettings.Direct3D9 != null)\r
{\r
- newSettings.Direct3D9.PresentParameters.BackBufferWidth = GameWindowSize.Width; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
- newSettings.Direct3D9.PresentParameters.BackBufferHeight = GameWindowSize.Height; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
+ var pp = newSettings.Direct3D9.PresentParameters;\r
+ pp.BackBufferWidth = GameWindowSize.Width; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
+ pp.BackBufferHeight = GameWindowSize.Height; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
+ newSettings.Direct3D9.PresentParameters = pp;\r
}\r
\r
CreateDevice(newSettings);\r
{\r
newSettings.BackBufferWidth = 0;\r
newSettings.BackBufferHeight = 0;\r
- newSettings.Direct3D9.PresentParameters.BackBufferWidth = GameWindowSize.Width; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
- newSettings.Direct3D9.PresentParameters.BackBufferHeight = GameWindowSize.Height; // \r
+ var pp = newSettings.Direct3D9.PresentParameters;\r
+ pp.BackBufferWidth = GameWindowSize.Width; // #23510 2010.10.31 add yyagi: to avoid setting BackBufferSize=ClientSize\r
+ pp.BackBufferHeight = GameWindowSize.Height; // \r
+ newSettings.Direct3D9.PresentParameters = pp;\r
CreateDevice( newSettings );\r
}\r
}\r
newSettings.Direct3D9.AdapterOrdinal = adapterOrdinal;\r
\r
newSettings.BackBufferWidth = 0; // #23510 2010.11.1 add yyagi to avoid to reset to 640x480 for the first time in XP.\r
- newSettings.BackBufferHeight = 0; //\r
- newSettings.Direct3D9.PresentParameters.BackBufferWidth = GameWindowSize.Width; //\r
- newSettings.Direct3D9.PresentParameters.BackBufferHeight = GameWindowSize.Height; //\r
+ newSettings.BackBufferHeight = 0; //\r
+ var pp = newSettings.Direct3D9.PresentParameters;\r
+ pp.BackBufferWidth = GameWindowSize.Width; //\r
+ pp.BackBufferHeight = GameWindowSize.Height; //\r
+ newSettings.Direct3D9.PresentParameters = pp;\r
\r
- CreateDevice(newSettings);\r
+ CreateDevice( newSettings);\r
}\r
\r
void game_FrameEnd( object sender, EventArgs e )\r
{\r
- Result result = SlimDX.Direct3D9.ResultCode.Success;\r
+ Result result = SharpDX.Direct3D9.ResultCode.Success;\r
+\r
try\r
{\r
- result = Direct3D9.Device.Present();\r
+ //result = Direct3D9.Device.TestCooperativeLevel();\r
+ Direct3D9.Device.Present();\r
}\r
- catch (Direct3D9Exception) // #23842 2011.1.6 yyagi: catch D3D9Exception to avoid unexpected termination by changing VSyncWait in fullscreen.\r
+ catch // #23842 2011.1.6 yyagi: catch D3D9Exception to avoid unexpected termination by changing VSyncWait in fullscreen.\r
{\r
deviceLost = true;\r
}\r
- if( result == SlimDX.Direct3D9.ResultCode.DeviceLost )\r
+\r
+ if( result == SharpDX.Direct3D9.ResultCode.DeviceLost )\r
deviceLost = true;\r
}\r
void game_FrameStart(object sender, CancelEventArgs e)\r
return;\r
}\r
\r
-// if (!game.IsActive || deviceLost) // #23568 2010.11.3 yyagi: separate conditions to support valiable sleep value when !IsActive.\r
- if (deviceLost)\r
- Thread.Sleep(50);\r
- else if (!game.IsActive && !this.CurrentSettings.EnableVSync) // #23568 2010.11.4 yyagi: Don't add sleep() while VSync is enabled.\r
- Thread.Sleep(this.game.InactiveSleepTime.Milliseconds);\r
+ //if (!game.IsActive || deviceLost) // #23568 2010.11.3 yyagi: separate conditions to support valiable sleep value when !IsActive.\r
+ if( deviceLost )\r
+ Thread.Sleep( 50 );\r
+ else if( !game.IsActive && !this.CurrentSettings.EnableVSync ) // #23568 2010.11.4 yyagi: Don't add sleep() while VSync is enabled.\r
+ Thread.Sleep( this.game.InactiveSleepTime.Milliseconds );\r
\r
if (deviceLost)\r
{\r
Result result = Direct3D9.Device.TestCooperativeLevel();\r
- if (result == SlimDX.Direct3D9.ResultCode.DeviceLost)\r
+ if (result == SharpDX.Direct3D9.ResultCode.DeviceLost)\r
{\r
e.Cancel = true;\r
return;\r
}\r
\r
result = ResetDevice();\r
- if (result.IsFailure)\r
+ if (result.Failure)\r
{\r
e.Cancel = true;\r
return;\r
}\r
Direct3D9.Device.MaximumFrameLatency = 1;\r
#else\r
- Direct3D9.Device = new SlimDX.Direct3D9.Device( Direct3D9Object, CurrentSettings.Direct3D9.AdapterOrdinal,\r
- CurrentSettings.Direct3D9.DeviceType, game.Window.Handle,\r
- CurrentSettings.Direct3D9.CreationFlags, CurrentSettings.Direct3D9.PresentParameters );\r
+ Direct3D9.Device = new SharpDX.Direct3D9.Device(\r
+ Direct3D9Object,\r
+ CurrentSettings.Direct3D9.AdapterOrdinal,\r
+ CurrentSettings.Direct3D9.DeviceType,\r
+ game.Window.Handle,\r
+ CurrentSettings.Direct3D9.CreationFlags,\r
+ CurrentSettings.Direct3D9.PresentParameters );\r
#endif\r
- if ( Result.Last == SlimDX.Direct3D9.ResultCode.DeviceLost )\r
+ if ( Result.GetResultFromWin32Error( Marshal.GetLastWin32Error() ) == SharpDX.Direct3D9.ResultCode.DeviceLost )\r
{\r
deviceLost = true;\r
return;\r
{\r
game.UnloadContent();\r
\r
- Result result = Direct3D9.Device.Reset( CurrentSettings.Direct3D9.PresentParameters );\r
- if( result == SlimDX.Direct3D9.ResultCode.DeviceLost )\r
+ Direct3D9.Device.Reset( CurrentSettings.Direct3D9.PresentParameters );\r
+\r
+ var result = Result.GetResultFromWin32Error( Marshal.GetLastWin32Error() );\r
+\r
+ if( result == SharpDX.Direct3D9.ResultCode.DeviceLost )\r
return result;\r
\r
PropogateSettings();\r
UpdateDeviceStats();\r
game.LoadContent();\r
\r
- return Result.Last;\r
+ return result;\r
}\r
\r
void ReleaseDevice()\r
{\r
ReleaseDevice9();\r
}\r
- void ReleaseDevice9()\r
+\r
+ void ReleaseDevice9()\r
{\r
if (Direct3D9.Device == null)\r
return;\r
CurrentSettings.BackBufferFormat = CurrentSettings.Direct3D9.PresentParameters.BackBufferFormat;\r
CurrentSettings.DepthStencilFormat = CurrentSettings.Direct3D9.PresentParameters.AutoDepthStencilFormat;\r
CurrentSettings.DeviceType = CurrentSettings.Direct3D9.DeviceType;\r
- CurrentSettings.MultisampleQuality = CurrentSettings.Direct3D9.PresentParameters.MultisampleQuality;\r
- CurrentSettings.MultisampleType = CurrentSettings.Direct3D9.PresentParameters.Multisample;\r
- CurrentSettings.RefreshRate = CurrentSettings.Direct3D9.PresentParameters.FullScreenRefreshRateInHertz;\r
+ CurrentSettings.MultisampleQuality = CurrentSettings.Direct3D9.PresentParameters.MultiSampleQuality;\r
+ CurrentSettings.MultisampleType = CurrentSettings.Direct3D9.PresentParameters.MultiSampleType;\r
+ CurrentSettings.RefreshRate = CurrentSettings.Direct3D9.PresentParameters.FullScreenRefreshRateInHz;\r
CurrentSettings.Windowed = CurrentSettings.Direct3D9.PresentParameters.Windowed;\r
}\r
\r
builder.AppendFormat( " ({0}x{1}), ", CurrentSettings.Direct3D9.PresentParameters.BackBufferWidth, CurrentSettings.Direct3D9.PresentParameters.BackBufferHeight );\r
\r
if( CurrentSettings.Direct3D9.AdapterFormat == CurrentSettings.Direct3D9.PresentParameters.BackBufferFormat )\r
- builder.Append( Enum.GetName( typeof( SlimDX.Direct3D9.Format ), CurrentSettings.Direct3D9.AdapterFormat ) );\r
+ builder.Append( Enum.GetName( typeof( SharpDX.Direct3D9.Format ), CurrentSettings.Direct3D9.AdapterFormat ) );\r
else\r
builder.AppendFormat( "backbuf {0}, adapter {1}",\r
- Enum.GetName( typeof( SlimDX.Direct3D9.Format ), CurrentSettings.Direct3D9.AdapterFormat ),\r
- Enum.GetName( typeof( SlimDX.Direct3D9.Format ), CurrentSettings.Direct3D9.PresentParameters.BackBufferFormat ) );\r
+ Enum.GetName( typeof( SharpDX.Direct3D9.Format ), CurrentSettings.Direct3D9.AdapterFormat ),\r
+ Enum.GetName( typeof( SharpDX.Direct3D9.Format ), CurrentSettings.Direct3D9.PresentParameters.BackBufferFormat ) );\r
\r
- builder.AppendFormat( " ({0})", Enum.GetName( typeof( SlimDX.Direct3D9.Format ), CurrentSettings.Direct3D9.PresentParameters.AutoDepthStencilFormat ) );\r
+ builder.AppendFormat( " ({0})", Enum.GetName( typeof( SharpDX.Direct3D9.Format ), CurrentSettings.Direct3D9.PresentParameters.AutoDepthStencilFormat ) );\r
\r
- if( CurrentSettings.Direct3D9.PresentParameters.Multisample == MultisampleType.NonMaskable )\r
+ if( CurrentSettings.Direct3D9.PresentParameters.MultiSampleType == MultisampleType.NonMaskable )\r
builder.Append( " (Nonmaskable Multisample)" );\r
- else if( CurrentSettings.Direct3D9.PresentParameters.Multisample != MultisampleType.None )\r
- builder.AppendFormat( " ({0}x Multisample)", (int) CurrentSettings.Direct3D9.PresentParameters.Multisample );\r
+ else if( CurrentSettings.Direct3D9.PresentParameters.MultiSampleType != MultisampleType.None )\r
+ builder.AppendFormat( " ({0}x Multisample)", (int) CurrentSettings.Direct3D9.PresentParameters.MultiSampleQuality );\r
\r
DeviceStatistics = builder.ToString();\r
}\r