OSDN Git Service

rev154(Direct3D9Ex対応)の続き。今度はwindowでの起動に失敗していた問題を修正。これでフルスクリーンとウインドウ、どちらも大丈夫となった。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Tue, 26 Apr 2011 17:20:58 +0000 (17:20 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Tue, 26 Apr 2011 17:20:58 +0000 (17:20 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@167 16f42ceb-6dc6-49c8-ba94-f2d53467949d

FDK17プロジェクト/コード/01.フレームワーク/Rendering/GraphicsDeviceManager.cs

index fa19aa7..839b70f 100644 (file)
@@ -39,8 +39,8 @@ namespace SampleFramework
         Game game;\r
         bool ignoreSizeChanges;\r
         bool deviceLost;\r
-        bool doNotStoreBufferSize;\r
-        bool renderingOccluded;\r
+//        bool doNotStoreBufferSize;\r
+//        bool renderingOccluded;\r
 \r
         int fullscreenWindowWidth;\r
         int fullscreenWindowHeight;\r
@@ -485,19 +485,33 @@ namespace SampleFramework
                        {\r
                                EnsureD3D9();\r
 \r
-#if TEST_Direct3D9Ex           // 2011.4.26 yyagi\r
-                               DisplayModeEx fullScreenDisplayMode = new DisplayModeEx();\r
+#if TEST_Direct3D9Ex\r
+                               // 2011.4.26 yyagi\r
+                               // Direct3D9.DeviceExを呼ぶ際(IDirect3D9Ex::CreateDeviceExを呼ぶ際)、\r
+                               // フルスクリーンモードで初期化する場合はDisplayModeEx(D3DDISPLAYMODEEX *pFullscreenDisplayMode)に\r
+                               // 適切な値を設定する必要あり。\r
+                               // 一方、ウインドウモードで初期化する場合は、D3DDISPLAYMODEEXをNULLにする必要があるが、\r
+                               // DisplayModeExがNULL不可と定義されているため、DeviceExのoverloadの中でDisplayModeExを引数に取らないものを\r
+                               // 使う。(DeviceEx側でD3DDISPLAYMODEEXをNULLにしてくれる)\r
+                               // 結局、DeviceExの呼び出しの際に、フルスクリーンかどうかで場合分けが必要となる。\r
                                if ( CurrentSettings.Direct3D9.PresentParameters.Windowed == false )\r
                                {\r
+                                       DisplayModeEx fullScreenDisplayMode = new DisplayModeEx();\r
                                        fullScreenDisplayMode.Width = CurrentSettings.Direct3D9.PresentParameters.BackBufferWidth;\r
                                        fullScreenDisplayMode.Height = CurrentSettings.Direct3D9.PresentParameters.BackBufferHeight;\r
                                        fullScreenDisplayMode.RefreshRate = CurrentSettings.Direct3D9.PresentParameters.FullScreenRefreshRateInHertz;\r
                                        fullScreenDisplayMode.Format = CurrentSettings.Direct3D9.PresentParameters.BackBufferFormat;\r
+\r
+                                       Direct3D9.Device = new SlimDX.Direct3D9.DeviceEx( Direct3D9Object, CurrentSettings.Direct3D9.AdapterOrdinal,\r
+                                               CurrentSettings.Direct3D9.DeviceType, game.Window.Handle,\r
+                                               CurrentSettings.Direct3D9.CreationFlags, CurrentSettings.Direct3D9.PresentParameters, fullScreenDisplayMode );\r
+                               }\r
+                               else\r
+                               {\r
+                                       Direct3D9.Device = new SlimDX.Direct3D9.DeviceEx( Direct3D9Object, CurrentSettings.Direct3D9.AdapterOrdinal,\r
+                                               CurrentSettings.Direct3D9.DeviceType, game.Window.Handle,\r
+                                               CurrentSettings.Direct3D9.CreationFlags, CurrentSettings.Direct3D9.PresentParameters );\r
                                }\r
-                               Direct3D9.Device = new SlimDX.Direct3D9.DeviceEx( Direct3D9Object, CurrentSettings.Direct3D9.AdapterOrdinal,\r
-                                       CurrentSettings.Direct3D9.DeviceType, game.Window.Handle,\r
-                                       CurrentSettings.Direct3D9.CreationFlags, CurrentSettings.Direct3D9.PresentParameters, fullScreenDisplayMode );\r
-                               // yyagi\r
 #else\r
                                Direct3D9.Device = new SlimDX.Direct3D9.Device( Direct3D9Object, CurrentSettings.Direct3D9.AdapterOrdinal,\r
                                        CurrentSettings.Direct3D9.DeviceType, game.Window.Handle,\r