• R/O
  • HTTP
  • SSH
  • HTTPS

提交

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

Violet Vreath is Shooter Game for Windows XP+(個人制作シューティングゲーム)


Commit MetaInfo

修订版6ac2276fa0ca2077e8e54b110757aecab543dfa2 (tree)
时间2022-07-14 22:34:21
作者gecchi <gecchi@192....>
Commitergecchi

Log Message

少し改良

更改概述

差异

--- a/GgafDx/include/jp/ggaf/dx/God.h
+++ b/GgafDx/include/jp/ggaf/dx/God.h
@@ -232,8 +232,11 @@ public:
232232
233233 void setDisplaySizeInfo();
234234
235-
236- void setAppropriateDisplaySize();
235+ /**
236+ * 適切な解像度設定を行う .
237+ * @param allow_chang_rezo true:解像度変更を許可する/false:解像度変更はしない
238+ */
239+ void setAppropriateDisplaySize(bool allow_chang_rezo = true);
237240
238241
239242 /**
--- a/GgafDx/src/jp/ggaf/dx/God.cpp
+++ b/GgafDx/src/jp/ggaf/dx/God.cpp
@@ -233,12 +233,12 @@ void God::setDisplaySizeInfo() {
233233 }
234234 _TRACE_("------------------------------------------------");
235235 }
236-void God::setAppropriateDisplaySize() {
236+void God::setAppropriateDisplaySize(bool allow_chang_rezo) {
237237 //フルスクリーン要求時、指定解像度に出来るか調べ、
238238 //出来ない場合は、近い解像度を探し、
239239 //_paPresetPrm[] と、_paDisplayMode[] を上書きする。
240240 EnumDisplayMonitors(nullptr, nullptr, God::updateMoniterPixcoordCallback, (LPARAM)this);
241-
241+ HRESULT hr;
242242 if (CONFIG::FULL_SCREEN) {
243243 for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
244244 _TRACE_("--- " << adapter_no+1 << "画面目 の解像度設定 --->");
@@ -249,47 +249,81 @@ void God::setAppropriateDisplaySize() {
249249 //2画面フルスクリーン時
250250 if (adapter_no == _primary_adapter_no) {
251251 //ゲーム画面1画面目
252- int n = checkAppropriateDisplaySize(
253- paRezos, rezo_num,
254- (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH,
255- (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT
256- );
257- CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = (pixcoord)(paRezos[n].width);
258- CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = (pixcoord)(paRezos[n].height);
252+ if (allow_chang_rezo) {
253+ //解像度変更許可
254+ int n = checkAppropriateDisplaySize(
255+ paRezos, rezo_num,
256+ (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH,
257+ (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT
258+ );
259+ CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = (pixcoord)(paRezos[n].width);
260+ CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = (pixcoord)(paRezos[n].height);
261+ } else {
262+ //解像度変更無し
263+ D3DDISPLAYMODE structD3DDisplayMode0;
264+ hr = God::_pID3D9->GetAdapterDisplayMode(adapter_no, &structD3DDisplayMode0);
265+ checkDxException(hr, D3D_OK, "GetAdapterDisplayMode に失敗しました。1");
266+ CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = (pixcoord)(structD3DDisplayMode0.Width);
267+ CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = (pixcoord)(structD3DDisplayMode0.Height);
268+ }
259269 _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH;
260270 _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT;
261- _TRACE_("ゲーム画面1画面目(adapter_no="<<adapter_no<<")は、"<<paRezos[n].width<<"x"<<paRezos[n].height<<" に設定");
262271 } else if (adapter_no == _secondary_adapter_no) {
263272 //ゲーム画面2画面目
264- int n = checkAppropriateDisplaySize(
265- paRezos, rezo_num,
266- (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH,
267- (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT
268- );
269- CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH = (pixcoord)(paRezos[n].width);
270- CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT = (pixcoord)(paRezos[n].height);
273+ if (allow_chang_rezo) {
274+ //解像度変更許可
275+ int n = checkAppropriateDisplaySize(
276+ paRezos, rezo_num,
277+ (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH,
278+ (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT
279+ );
280+ CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH = (pixcoord)(paRezos[n].width);
281+ CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT = (pixcoord)(paRezos[n].height);
282+ } else {
283+ //解像度変更無し
284+ D3DDISPLAYMODE structD3DDisplayMode1;
285+ hr = God::_pID3D9->GetAdapterDisplayMode(adapter_no, &structD3DDisplayMode1);
286+ checkDxException(hr, D3D_OK, "GetAdapterDisplayMode に失敗しました。3");
287+ CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = (pixcoord)(structD3DDisplayMode1.Width);
288+ CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = (pixcoord)(structD3DDisplayMode1.Height);
289+ }
271290 _paPresetPrm[_secondary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH;
272291 _paPresetPrm[_secondary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT;
273- _TRACE_("ゲーム画面2画面目(adapter_no="<<adapter_no<<")は、"<<paRezos[n].width<<"x"<<paRezos[n].height<<" に設定");
274292 } else {
275293 //メモ:ゲーム画面3画面目以降1画面目・2画面目の解像度は、現状の解像度をそのまま設定。
276- pixcoord width = _paAvailableAdapter[adapter_no].rcMonitor.right - _paAvailableAdapter[adapter_no].rcMonitor.left;
277- pixcoord height = _paAvailableAdapter[adapter_no].rcMonitor.bottom - _paAvailableAdapter[adapter_no].rcMonitor.top;
278- _paPresetPrm[adapter_no].BackBufferWidth = width;
279- _paPresetPrm[adapter_no].BackBufferHeight = height;
280- _TRACE_("adapter_no="<<adapter_no << "の画面は、現状の "<<width<<"x"<<height<<" に設定");
294+// pixcoord width = _paAvailableAdapter[adapter_no].rcMonitor.right - _paAvailableAdapter[adapter_no].rcMonitor.left;
295+// pixcoord height = _paAvailableAdapter[adapter_no].rcMonitor.bottom - _paAvailableAdapter[adapter_no].rcMonitor.top;
296+// _paPresetPrm[adapter_no].BackBufferWidth = width;
297+// _paPresetPrm[adapter_no].BackBufferHeight = height;
298+ D3DDISPLAYMODE structD3DDisplayMode;
299+ hr = God::_pID3D9->GetAdapterDisplayMode(adapter_no, &structD3DDisplayMode);
300+ _paPresetPrm[adapter_no].BackBufferWidth = (pixcoord)(structD3DDisplayMode.Width);
301+ _paPresetPrm[adapter_no].BackBufferHeight = (pixcoord)(structD3DDisplayMode.Height);
302+ checkDxException(hr, D3D_OK, "GetAdapterDisplayMode に失敗しました。4");
303+ _TRACE_("adapter_no="<<adapter_no << "の画面は、現状の "<<
304+ _paPresetPrm[adapter_no].BackBufferWidth<<"x"<<_paPresetPrm[adapter_no].BackBufferHeight<<" に設定");
281305 }
282306
283307 } else {
284308 //1画面フルスクリーン時
285309 if (adapter_no == _primary_adapter_no) {
286- int n = checkAppropriateDisplaySize(
287- paRezos, rezo_num,
288- (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH,
289- (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT
290- );
291- CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH = (pixcoord)(paRezos[n].width);
292- CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT = (pixcoord)(paRezos[n].height);
310+ if (allow_chang_rezo) {
311+ //解像度変更許可
312+ int n = checkAppropriateDisplaySize(
313+ paRezos, rezo_num,
314+ (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH,
315+ (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT
316+ );
317+ CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH = (pixcoord)(paRezos[n].width);
318+ CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT = (pixcoord)(paRezos[n].height);
319+ } else {
320+ //解像度変更無し
321+ D3DDISPLAYMODE structD3DDisplayMode0;
322+ hr = God::_pID3D9->GetAdapterDisplayMode(adapter_no, &structD3DDisplayMode0);
323+ checkDxException(hr, D3D_OK, "GetAdapterDisplayMode に失敗しました。5");
324+ CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH = (pixcoord)(structD3DDisplayMode0.Width);
325+ CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT = (pixcoord)(structD3DDisplayMode0.Height);
326+ }
293327 _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH;
294328 _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT;
295329 } else {
@@ -583,7 +617,7 @@ void God::setAppropriateDisplaySize() {
583617
584618
585619 int God::checkAppropriateDisplaySize(God::RezoInfo* prm_paRezos, int prm_rezo_num,
586- UINT prm_width, UINT prm_height) {
620+ UINT prm_width, UINT prm_height) {
587621 _TRACE_("checkAppropriateDisplaySize() 所望解像度、"<<prm_width<<"x"<<prm_height);
588622
589623 for (int n = 0; n < prm_rezo_num; n++) {
@@ -615,9 +649,9 @@ int God::checkAppropriateDisplaySize(God::RezoInfo* prm_paRezos, int prm_rezo_nu
615649 }
616650
617651 void God::createWindow(WNDCLASSEX& prm_wndclass1, WNDCLASSEX& prm_wndclass2,
618- const char* prm_title1 , const char* prm_title2,
619- DWORD prm_dwStyle1 , DWORD prm_dwStyle2,
620- HWND& out_hWnd1 , HWND& out_hWnd2) {
652+ const char* prm_title1 , const char* prm_title2,
653+ DWORD prm_dwStyle1 , DWORD prm_dwStyle2,
654+ HWND& out_hWnd1 , HWND& out_hWnd2) {
621655
622656 //2011/09/18 WDDM が使用できるなら使用するように変更。
623657 // マルチモニタフルスクリーン時のデバイスロスト時の復旧が、
@@ -1070,8 +1104,8 @@ void God::createWindow(WNDCLASSEX& prm_wndclass1, WNDCLASSEX& prm_wndclass2,
10701104 }
10711105
10721106 void God::createWindow(WNDCLASSEX& prm_wndclass1, WNDCLASSEX& prm_wndclass2,
1073- const char* prm_title1 , const char* prm_title2,
1074- HWND& out_hWnd1 , HWND& out_hWnd2) {
1107+ const char* prm_title1 , const char* prm_title2,
1108+ HWND& out_hWnd1 , HWND& out_hWnd2) {
10751109 createWindow( prm_wndclass1, prm_wndclass2,
10761110 prm_title1, prm_title2,
10771111 WS_OVERLAPPEDWINDOW | WS_VISIBLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
@@ -1079,9 +1113,9 @@ void God::createWindow(WNDCLASSEX& prm_wndclass1, WNDCLASSEX& prm_wndclass2,
10791113 }
10801114
10811115 void God::createWindow(WNDCLASSEX& prm_wndclass1,
1082- const char* prm_title1 ,
1083- DWORD prm_dwStyle1 ,
1084- HWND& out_hWnd1 ) {
1116+ const char* prm_title1 ,
1117+ DWORD prm_dwStyle1 ,
1118+ HWND& out_hWnd1 ) {
10851119 HWND hWnd2;
10861120 WNDCLASSEX wcex2 = prm_wndclass1;
10871121 wcex2.lpszClassName = "Gecchi Game App Framework (window[1])";
@@ -1092,8 +1126,8 @@ void God::createWindow(WNDCLASSEX& prm_wndclass1,
10921126 }
10931127
10941128 void God::createWindow(WNDCLASSEX& prm_wndclass1,
1095- const char* prm_title1 ,
1096- HWND& out_hWnd1 ) {
1129+ const char* prm_title1 ,
1130+ HWND& out_hWnd1 ) {
10971131 createWindow( prm_wndclass1,
10981132 prm_title1,
10991133 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
@@ -1101,8 +1135,8 @@ void God::createWindow(WNDCLASSEX& prm_wndclass1,
11011135 }
11021136
11031137 void God::createWindow(WNDPROC prm_WndProc,
1104- const char* prm_title1, const char* prm_title2,
1105- HWND& out_hWnd1 , HWND& out_hWnd2 ) {
1138+ const char* prm_title1, const char* prm_title2,
1139+ HWND& out_hWnd1 , HWND& out_hWnd2 ) {
11061140 //ウィンドウ定義&作成
11071141 WNDCLASSEX wcex1;
11081142 ZeroMemory(&wcex1, sizeof(WNDCLASSEX));
@@ -1122,8 +1156,8 @@ void God::createWindow(WNDPROC prm_WndProc,
11221156 }
11231157
11241158 void God::createWindow(WNDPROC prm_WndProc,
1125- const char* prm_title1,
1126- HWND& out_hWnd1) {
1159+ const char* prm_title1,
1160+ HWND& out_hWnd1) {
11271161 HWND hWnd2;
11281162 createWindow(prm_WndProc,
11291163 prm_title1, "Window_02",
@@ -1191,8 +1225,8 @@ HRESULT God::initDevice() {
11911225 //ピクセルシェーダー、頂点シェーダーバージョンチェック
11921226 D3DCAPS9 caps;
11931227 God::_pID3D9->GetDeviceCaps(D3DADAPTER_DEFAULT, // [in] ディスプレイ アダプタを示す序数。
1194- D3DDEVTYPE_HAL, // [in] デバイスの種類。 D3DDEVTYPE列挙型のメンバ
1195- &caps); // [out] デバイスの能力が格納される
1228+ D3DDEVTYPE_HAL, // [in] デバイスの種類。 D3DDEVTYPE列挙型のメンバ
1229+ &caps); // [out] デバイスの能力が格納される
11961230 _vs_v = caps.VertexShaderVersion;
11971231 _ps_v = caps.PixelShaderVersion;
11981232
@@ -1396,12 +1430,12 @@ HRESULT God::createDx9Device(UINT adapter,
13961430 God::_pID3DDevice9 = (IDirect3DDevice9Ex*)pID3DDevice9Ex;
13971431 } else {
13981432 hr = God::_pID3D9->CreateDevice(adapter,
1399- device_type,
1400- hFocusWindow,
1401- behavior_flags,
1402- pPresentationParameters,
1403- &God::_pID3DDevice9
1404- );
1433+ device_type,
1434+ hFocusWindow,
1435+ behavior_flags,
1436+ pPresentationParameters,
1437+ &God::_pID3DDevice9
1438+ );
14051439 }
14061440 return hr;
14071441 }
@@ -1628,16 +1662,16 @@ _TRACE_("restoreFullScreenRenderTarget() 5");
16281662 _TRACE_("restoreFullScreenRenderTarget() 6");
16291663 //背景色でクリア
16301664 hr = God::_pID3DDevice9->Clear(0, nullptr, D3DCLEAR_TARGET, _color_border, 1.0f, 0);
1631- //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。1");
1665+ returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。1");
16321666 _TRACE_("restoreFullScreenRenderTarget() 7");
16331667 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1634- //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。2");
1668+ returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。2");
16351669 _TRACE_("restoreFullScreenRenderTarget() 8");
16361670 hr = God::_pID3DDevice9->Clear(0, nullptr, D3DCLEAR_TARGET, _color_border, 1.0f, 0);
1637- //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。3");
1671+ returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。3");
16381672 _TRACE_("restoreFullScreenRenderTarget() 9");
16391673 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1640- //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。4");
1674+ returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。4");
16411675 _TRACE_("restoreFullScreenRenderTarget() 10");
16421676
16431677 //アダプタに関連付けられたスワップチェーンを取得してバックバッファ取得
@@ -1660,50 +1694,50 @@ _TRACE_("restoreFullScreenRenderTarget() 12");
16601694 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[PRIMARY_VIEW],
16611695 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
16621696 D3DTEXF_NONE);
1663- //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(1)\n"
1664- // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1697+ checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(1)\n"
1698+ "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
16651699
16661700 hr = God::_pID3DDevice9->StretchRect(
16671701 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[SECONDARY_VIEW],
16681702 _apBackBuffer[SECONDARY_VIEW], &_aRect_ViewScreen[SECONDARY_VIEW],
16691703 D3DTEXF_NONE);
1670- //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(1)\n"
1671- // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1704+ checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(1)\n"
1705+ "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
16721706 } else {
16731707 hr = God::_pID3DDevice9->StretchRect(
16741708 _pRenderTextureSurface, &_rectRenderTargetBuffer,
16751709 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
16761710 D3DTEXF_NONE);
1677- //checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(1)");
1711+ checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(1)");
16781712 }
16791713
16801714 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1681- //returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。");
1715+ returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。");
16821716 //フリップしてもう一度背景色で塗る
16831717 if (CONFIG::DUAL_VIEW) {
16841718 hr = God::_pID3DDevice9->StretchRect(
16851719 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[PRIMARY_VIEW],
16861720 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
16871721 D3DTEXF_NONE);
1688- //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(2)\n"
1689- // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1722+ checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(2)\n"
1723+ "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
16901724
16911725 hr = God::_pID3DDevice9->StretchRect(
16921726 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[SECONDARY_VIEW],
16931727 _apBackBuffer[SECONDARY_VIEW], &_aRect_ViewScreen[SECONDARY_VIEW],
16941728 D3DTEXF_NONE);
1695- //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(2)\n"
1696- // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1729+ checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(2)\n"
1730+ "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
16971731 } else {
16981732 hr = God::_pID3DDevice9->StretchRect(
16991733 _pRenderTextureSurface, &_rectRenderTargetBuffer,
17001734 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
17011735 D3DTEXF_NONE
17021736 );
1703- //checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(2)");
1737+ checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(2)");
17041738 }
17051739 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1706- //returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。(2)");
1740+ returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。(2)");
17071741 _TRACE_("restoreFullScreenRenderTarget() 20");
17081742 //↑無駄な感じだが、VISTAとXPの2画面目フルスクリーンモード時
17091743 // 両対応させるのはこのようなコードしかないという結論。
@@ -1985,6 +2019,7 @@ void God::presentSpacetimeVisualize() {
19852019
19862020 //解像度変更を考慮
19872021 if (CONFIG::FULL_SCREEN) {
2022+ //一旦戻す
19882023 CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH_BK;
19892024 CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT_BK;
19902025 CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH_BK;
@@ -1995,27 +2030,30 @@ _TRACE_("pGOD->setDisplaySizeInfo(); begin");
19952030 pGOD->setDisplaySizeInfo();
19962031 _TRACE_("pGOD->setDisplaySizeInfo(); done");
19972032 _TRACE_("pGOD->setAppropriateDisplaySize(); begin");
1998- pGOD->setAppropriateDisplaySize();
2033+ pGOD->setAppropriateDisplaySize(false);
2034+ //checkAppropriateDisplaySize() による解像度変更はしない
2035+ //理由:画面ローテートで解像度を変更された場合、
2036+ //その解像度から CONFIGの解像度へ、更に解像度を変更しようとすると
2037+ //アプリ終了時に変更後の解像度のまま残るため?
19992038 _TRACE_("pGOD->setAppropriateDisplaySize(); done");
20002039
20012040 //バックバッファサイズ
2002- if (CONFIG::FULL_SCREEN) {
2003- if(CONFIG::DUAL_VIEW) {
2004- //フルスクリーンモード・2画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2005- _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH;
2006- _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT;
2007- _paPresetPrm[_secondary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH;
2008- _paPresetPrm[_secondary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT;
2009- } else {
2010- //フルスクリーンモード・1画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2011- _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH;
2012- _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT;
2013- _paPresetPrm[_secondary_adapter_no].BackBufferWidth = 0;
2014- _paPresetPrm[_secondary_adapter_no].BackBufferHeight = 0;
2015- }
2041+ if(CONFIG::DUAL_VIEW) {
2042+ //フルスクリーンモード・2画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2043+ _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH;
2044+ _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT;
2045+ _paPresetPrm[_secondary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH;
2046+ _paPresetPrm[_secondary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT;
2047+ } else {
2048+ //フルスクリーンモード・1画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2049+ _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH;
2050+ _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT;
2051+ _paPresetPrm[_secondary_adapter_no].BackBufferWidth = 0;
2052+ _paPresetPrm[_secondary_adapter_no].BackBufferHeight = 0;
20162053 }
20172054
20182055 _TRACE_("SetWindowPos()!");
2056+ //下のrestoreFullScreenRenderTarget() で似たようなことをやってるのでいらんかも
20192057 if (CONFIG::DUAL_VIEW) {
20202058 SetWindowPos(_paHWnd[_primary_adapter_no], NULL, 0, 0,
20212059 _paPresetPrm[_primary_adapter_no].BackBufferWidth,
@@ -2032,9 +2070,6 @@ _TRACE_("SetWindowPos()!");
20322070 SWP_NOMOVE | SWP_NOZORDER);
20332071 }
20342072 }
2035-
2036-
2037-
20382073 //デバイスリセットを試みる
20392074 _TRACE_("【デバイスロスト処理】デバイスリセット BEGIN ------>");
20402075 for (int i = 0; i < 100*60*10; i++) {