• 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

修订版c9639e815fe0514dcba8bf73af1d0b8ff9177467 (tree)
时间2022-07-12 22:20:55
作者gecchi <gecchi@192....>
Commitergecchi

Log Message

フルスクリーン時に画面回転等の解像度変更をいきなりされては困ってしまう!

更改概述

差异

--- a/GgafDx/include/jp/ggaf/dx/God.h
+++ b/GgafDx/include/jp/ggaf/dx/God.h
@@ -155,6 +155,9 @@ public:
155155 }
156156 void init(int prm_rezo_num) {
157157 rezo_num = prm_rezo_num;
158+ if (paRezoInfo) {
159+ GGAF_DELETEARR_NULLABLE(paRezoInfo);
160+ }
158161 paRezoInfo = NEW RezoInfo[rezo_num];
159162 }
160163 ~AdapterRezos() {
@@ -227,6 +230,8 @@ public:
227230 */
228231 God();
229232
233+ void setDisplaySizeInfo();
234+
230235
231236 void setAppropriateDisplaySize();
232237
--- a/GgafDx/src/jp/ggaf/dx/God.cpp
+++ b/GgafDx/src/jp/ggaf/dx/God.cpp
@@ -181,7 +181,58 @@ void God::chengeViewAspect(bool prm_b) {
181181 God::_pHWnd_adjustScreen = God::_pHWndPrimary;
182182 }
183183 }
184+void God::setDisplaySizeInfo() {
185+ //アダプタ情報格納
186+ for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
187+ _paAvailableAdapter[adapter_no].hMonitor = God::_pID3D9->GetAdapterMonitor(adapter_no);
188+ int mode_num = God::_pID3D9->GetAdapterModeCount(adapter_no, D3DFMT_X8R8G8B8);
189+ _paAvailableAdapter[adapter_no].setModeNum(mode_num);
190+ D3DDISPLAYMODE* paMode = _paAvailableAdapter[adapter_no].paModes;
191+ for (int n = 0; n < mode_num; n++) {
192+ God::_pID3D9->EnumAdapterModes(adapter_no, D3DFMT_X8R8G8B8, n, &(paMode[n]));
193+ }
194+ }
195+
196+ //解像度情報格納
197+ for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
198+ std::vector<UINT> vecWidth;
199+ std::vector<UINT> vecHeight;
200+ std::vector<std::string> vecRezo;
201+ int mode_num = _paAvailableAdapter[adapter_no].mode_num;
202+ D3DDISPLAYMODE* paMode = pGOD->_paAvailableAdapter[adapter_no].paModes;
203+ _TRACE_("画面["<<adapter_no<<"] mode_num="<<mode_num);
204+ for (int n = 0; n < mode_num; n++) {
205+ UINT width = paMode[n].Width;
206+ UINT height = paMode[n].Height;
207+ D3DFORMAT format = paMode[n].Format;
208+ std::ostringstream oss;
209+ oss << width << "X" << height;
210+ std::string rezo = oss.str();
211+ if (std::find(vecRezo.begin(), vecRezo.end(), rezo) == vecRezo.end()) {
212+ vecRezo.push_back(rezo);
213+ vecWidth.push_back(width);
214+ vecHeight.push_back(height);
215+ }
216+ }
217+ _paAdapterRezos[adapter_no].init(vecRezo.size());
218+ for (int n = 0; n < vecRezo.size(); n++) {
219+ //存在していない
220+ _paAdapterRezos[adapter_no].paRezoInfo[n].width = vecWidth[n];
221+ _paAdapterRezos[adapter_no].paRezoInfo[n].height = vecHeight[n];
222+ _paAdapterRezos[adapter_no].paRezoInfo[n].item_str = vecRezo[n];
223+ }
224+ }
225+
226+ _TRACE_("利用可能画面解像度一覧");
184227
228+ for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
229+ for (int n = 0; n < _paAdapterRezos[adapter_no].rezo_num; n++) {
230+ RezoInfo* pMode = _paAdapterRezos[adapter_no].paRezoInfo;
231+ _TRACE_("["<<adapter_no<<"]["<<n<<"]="<<(pMode[n].width)<<","<<(pMode[n].height)<<" = "<<(pMode[n].item_str));
232+ }
233+ }
234+ _TRACE_("------------------------------------------------");
235+}
185236 void God::setAppropriateDisplaySize() {
186237 //フルスクリーン要求時、指定解像度に出来るか調べ、
187238 //出来ない場合は、近い解像度を探し、
@@ -822,133 +873,11 @@ void God::createWindow(WNDCLASSEX& prm_wndclass1, WNDCLASSEX& prm_wndclass2,
822873 }
823874 }
824875
825- //アダプタ情報格納
826- _paAvailableAdapter = NEW Adapter[_num_adapter];
827- for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
828- _paAvailableAdapter[adapter_no].hMonitor = God::_pID3D9->GetAdapterMonitor(adapter_no);
829- int mode_num = God::_pID3D9->GetAdapterModeCount(adapter_no, D3DFMT_X8R8G8B8);
830- _paAvailableAdapter[adapter_no].setModeNum(mode_num);
831- D3DDISPLAYMODE* paMode = _paAvailableAdapter[adapter_no].paModes;
832- for (int n = 0; n < mode_num; n++) {
833- God::_pID3D9->EnumAdapterModes(adapter_no, D3DFMT_X8R8G8B8, n, &(paMode[n]));
834- }
835- }
836876
837- //解像度情報格納
877+ _paAvailableAdapter = NEW Adapter[_num_adapter];
838878 _paAdapterRezos = NEW AdapterRezos[_num_adapter];
839- for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
840- std::vector<UINT> vecWidth;
841- std::vector<UINT> vecHeight;
842- std::vector<std::string> vecRezo;
843- int mode_num = _paAvailableAdapter[adapter_no].mode_num;
844- D3DDISPLAYMODE* paMode = pGOD->_paAvailableAdapter[adapter_no].paModes;
845- _TRACE_("画面["<<adapter_no<<"] mode_num="<<mode_num);
846- for (int n = 0; n < mode_num; n++) {
847- UINT width = paMode[n].Width;
848- UINT height = paMode[n].Height;
849- D3DFORMAT format = paMode[n].Format;
850- std::ostringstream oss;
851- oss << width << "X" << height;
852- std::string rezo = oss.str();
853- if (std::find(vecRezo.begin(), vecRezo.end(), rezo) == vecRezo.end()) {
854- vecRezo.push_back(rezo);
855- vecWidth.push_back(width);
856- vecHeight.push_back(height);
857- }
858- }
859- _paAdapterRezos[adapter_no].init(vecRezo.size());
860- for (int n = 0; n < vecRezo.size(); n++) {
861- //存在していない
862- _paAdapterRezos[adapter_no].paRezoInfo[n].width = vecWidth[n];
863- _paAdapterRezos[adapter_no].paRezoInfo[n].height = vecHeight[n];
864- _paAdapterRezos[adapter_no].paRezoInfo[n].item_str = vecRezo[n];
865- }
866- }
867-
868- _TRACE_("利用可能画面解像度一覧");
869-
870- for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
871- for (int n = 0; n < _paAdapterRezos[adapter_no].rezo_num; n++) {
872- RezoInfo* pMode = _paAdapterRezos[adapter_no].paRezoInfo;
873- _TRACE_("["<<adapter_no<<"]["<<n<<"]="<<(pMode[n].width)<<","<<(pMode[n].height)<<" = "<<(pMode[n].item_str));
874- }
875- }
876- _TRACE_("------------------------------------------------");
877-
878-// //フルスクリーン要求時、指定解像度に出来るか調べ、
879-// //出来ない場合は、近い解像度を探し、
880-// //_paPresetPrm[] と、_paDisplayMode[] を上書きする。
881-// EnumDisplayMonitors(nullptr, nullptr, God::updateMoniterPixcoordCallback, (LPARAM)this);
882-//
883-// if (CONFIG::FULL_SCREEN) {
884-// for (int adapter_no = 0; adapter_no < _num_adapter; adapter_no++) {
885-// _TRACE_("--- " << adapter_no+1 << "画面目 の解像度設定 --->");
886-// int rezo_num = _paAdapterRezos[adapter_no].rezo_num;
887-// RezoInfo* paRezos = _paAdapterRezos[adapter_no].paRezoInfo;
888-//
889-// if (CONFIG::DUAL_VIEW) {
890-// //2画面フルスクリーン時
891-// if (adapter_no == _primary_adapter_no) {
892-// //ゲーム画面1画面目
893-// int n = checkAppropriateDisplaySize(
894-// paRezos, rezo_num,
895-// (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH,
896-// (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT
897-// );
898-// CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH = (pixcoord)(paRezos[n].width);
899-// CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT = (pixcoord)(paRezos[n].height);
900-// _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH;
901-// _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT;
902-// _TRACE_("ゲーム画面1画面目(adapter_no="<<adapter_no<<")は、"<<paRezos[n].width<<"x"<<paRezos[n].height<<" に設定");
903-// } else if (adapter_no == _secondary_adapter_no) {
904-// //ゲーム画面2画面目
905-// int n = checkAppropriateDisplaySize(
906-// paRezos, rezo_num,
907-// (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH,
908-// (UINT)CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT
909-// );
910-// CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH = (pixcoord)(paRezos[n].width);
911-// CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT = (pixcoord)(paRezos[n].height);
912-// _paPresetPrm[_secondary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH;
913-// _paPresetPrm[_secondary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT;
914-// _TRACE_("ゲーム画面2画面目(adapter_no="<<adapter_no<<")は、"<<paRezos[n].width<<"x"<<paRezos[n].height<<" に設定");
915-// } else {
916-// //メモ:ゲーム画面3画面目以降1画面目・2画面目の解像度は、現状の解像度をそのまま設定。
917-// pixcoord width = _paAvailableAdapter[adapter_no].rcMonitor.right - _paAvailableAdapter[adapter_no].rcMonitor.left;
918-// pixcoord height = _paAvailableAdapter[adapter_no].rcMonitor.bottom - _paAvailableAdapter[adapter_no].rcMonitor.top;
919-// _paPresetPrm[adapter_no].BackBufferWidth = width;
920-// _paPresetPrm[adapter_no].BackBufferHeight = height;
921-// _TRACE_("adapter_no="<<adapter_no << "の画面は、現状の "<<width<<"x"<<height<<" に設定");
922-// }
923-//
924-// } else {
925-// //1画面フルスクリーン時
926-// if (adapter_no == _primary_adapter_no) {
927-// int n = checkAppropriateDisplaySize(
928-// paRezos, rezo_num,
929-// (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH,
930-// (UINT)CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT
931-// );
932-// CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH = (pixcoord)(paRezos[n].width);
933-// CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT = (pixcoord)(paRezos[n].height);
934-// _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH;
935-// _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT;
936-// } else {
937-// _paPresetPrm[adapter_no].BackBufferWidth = 0;
938-// _paPresetPrm[adapter_no].BackBufferHeight = 0;
939-// }
940-//
941-// }
942-// //上書き更新
943-// _paDisplayMode[adapter_no].Width = _paPresetPrm[adapter_no].BackBufferWidth;
944-// _paDisplayMode[adapter_no].Height = _paPresetPrm[adapter_no].BackBufferHeight;
945-// _TRACE_("<---" << adapter_no+1 << "画面目の解像度は、"<<_paDisplayMode[adapter_no].Width<<"x"<<_paDisplayMode[adapter_no].Height<<"に確定しました。");
946-// }
947-// }
948-
879+ pGOD->setDisplaySizeInfo();
949880 pGOD->setAppropriateDisplaySize();
950-
951-
952881 _paHWnd = NEW HWND[_num_adapter > 2 ? _num_adapter : 2];
953882 for (int i = 0; i < (_num_adapter > 2 ? _num_adapter : 2); i++) {
954883 _paHWnd[i] = nullptr;
@@ -1622,6 +1551,8 @@ HRESULT God::initDx9Device() {
16221551
16231552
16241553 HRESULT God::restoreFullScreenRenderTarget() {
1554+_TRACE_("restoreFullScreenRenderTarget() 1");
1555+
16251556 if (!CONFIG::FULL_SCREEN) {
16261557 _TRACE_("【警告】フルスクリーン時意外、呼び出し不要です。");
16271558 return D3D_OK;
@@ -1637,7 +1568,7 @@ HRESULT God::restoreFullScreenRenderTarget() {
16371568 D3DPOOL_DEFAULT,
16381569 &_pRenderTexture,
16391570 nullptr);
1640-
1571+_TRACE_("restoreFullScreenRenderTarget() 2");
16411572 // LPDIRECT3DTEXTURE9 pIDirect3DTexture9;
16421573 // HRESULT hr = D3DXCreateTextureFromFileEx(
16431574 // God::_pID3DDevice9, // [in] LPDIRECT3DDEVICE9 pDevice,
@@ -1669,7 +1600,7 @@ HRESULT God::restoreFullScreenRenderTarget() {
16691600 // HANDLE* pHandle
16701601 // );
16711602
1672-
1603+_TRACE_("restoreFullScreenRenderTarget() 3");
16731604 returnWhenFailed(hr, D3D_OK, "レンダリングターゲットテクスチャ("<<CONFIG::RENDER_TARGET_BUFFER_WIDTH<<"x"<<CONFIG::RENDER_TARGET_BUFFER_HEIGHT<<")の作成に失敗。\nサイズを確認して下さい。");
16741605 //RenderTarget(描画先)をテクスチャへ切り替え
16751606 hr = _pRenderTexture->GetSurfaceLevel(0, &_pRenderTextureSurface);
@@ -1677,7 +1608,7 @@ HRESULT God::restoreFullScreenRenderTarget() {
16771608 hr = God::_pID3DDevice9->SetRenderTarget(0, _pRenderTextureSurface);
16781609 returnWhenFailed(hr, D3D_OK, "レンダリングターゲットテクスチャへ SetRenderTarget 出来ませんでした。");
16791610
1680-
1611+_TRACE_("restoreFullScreenRenderTarget() 4");
16811612 //テクスチャに描画する際の深度バッファ用サーフェイスを別途作成
16821613 hr = God::_pID3DDevice9->CreateDepthStencilSurface(
16831614 CONFIG::RENDER_TARGET_BUFFER_WIDTH,
@@ -1689,22 +1620,33 @@ HRESULT God::restoreFullScreenRenderTarget() {
16891620 &_pRenderTextureZ, //IDirect3DSurface9** ppSurface,
16901621 nullptr //HANDLE* pHandle 現在未使用
16911622 );
1692- //深度バッファ作成自動生成の、深度バッファ用サーフェイスを上記に変更
16931623 returnWhenFailed(hr, D3D_OK, "レンダリングターゲットテクスチャのZバッファ作成に失敗しました。");
1624+_TRACE_("restoreFullScreenRenderTarget() 5");
1625+ //深度バッファ作成自動生成の、深度バッファ用サーフェイスを上記に変更
16941626 hr = God::_pID3DDevice9->SetDepthStencilSurface(_pRenderTextureZ);
16951627 returnWhenFailed(hr, D3D_OK, "レンダリングターゲットテクスチャへ SetDepthStencilSurface 出来ませんでした。");
1628+_TRACE_("restoreFullScreenRenderTarget() 6");
16961629 //背景色でクリア
16971630 hr = God::_pID3DDevice9->Clear(0, nullptr, D3DCLEAR_TARGET, _color_border, 1.0f, 0);
1631+ //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。1");
1632+_TRACE_("restoreFullScreenRenderTarget() 7");
16981633 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1634+ //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。2");
1635+_TRACE_("restoreFullScreenRenderTarget() 8");
16991636 hr = God::_pID3DDevice9->Clear(0, nullptr, D3DCLEAR_TARGET, _color_border, 1.0f, 0);
1637+ //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。3");
1638+_TRACE_("restoreFullScreenRenderTarget() 9");
17001639 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1701- returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。");
1640+ //returnWhenFailed(hr, D3D_OK, "クリア色(_color_border)の塗りつぶしよる、画面クリアに失敗しました。4");
1641+_TRACE_("restoreFullScreenRenderTarget() 10");
17021642
17031643 //アダプタに関連付けられたスワップチェーンを取得してバックバッファ取得
17041644 hr = God::_pID3DDevice9->GetSwapChain( _primary_adapter_no, &_apSwapChain[PRIMARY_VIEW] );
17051645 returnWhenFailed(hr, D3D_OK, "スワップチェイン取得に失敗しました。");
1646+_TRACE_("restoreFullScreenRenderTarget() 11");
17061647 hr = _apSwapChain[PRIMARY_VIEW]->GetBackBuffer( 0, D3DBACKBUFFER_TYPE_MONO, &_apBackBuffer[PRIMARY_VIEW] );
17071648 returnWhenFailed(hr, D3D_OK, "スワップチェインから、ターゲットのバックバッファ取得に失敗しました。");
1649+_TRACE_("restoreFullScreenRenderTarget() 12");
17081650 if (CONFIG::DUAL_VIEW) {
17091651 hr = God::_pID3DDevice9->GetSwapChain( _secondary_adapter_no, &_apSwapChain[SECONDARY_VIEW] );
17101652 returnWhenFailed(hr, D3D_OK, "2画面目のスワップチェイン取得に失敗しました。\nマルチディスプレイ環境に問題発生しました。");
@@ -1718,56 +1660,57 @@ HRESULT God::restoreFullScreenRenderTarget() {
17181660 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[PRIMARY_VIEW],
17191661 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
17201662 D3DTEXF_NONE);
1721- checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(1)\n"
1722- "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1663+ //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(1)\n"
1664+ // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
17231665
17241666 hr = God::_pID3DDevice9->StretchRect(
17251667 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[SECONDARY_VIEW],
17261668 _apBackBuffer[SECONDARY_VIEW], &_aRect_ViewScreen[SECONDARY_VIEW],
17271669 D3DTEXF_NONE);
1728- checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(1)\n"
1729- "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1670+ //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(1)\n"
1671+ // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
17301672 } else {
17311673 hr = God::_pID3DDevice9->StretchRect(
17321674 _pRenderTextureSurface, &_rectRenderTargetBuffer,
17331675 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
17341676 D3DTEXF_NONE);
1735- checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(1)");
1677+ //checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(1)");
17361678 }
17371679
17381680 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1739- returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。");
1681+ //returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。");
17401682 //フリップしてもう一度背景色で塗る
17411683 if (CONFIG::DUAL_VIEW) {
17421684 hr = God::_pID3DDevice9->StretchRect(
17431685 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[PRIMARY_VIEW],
17441686 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
17451687 D3DTEXF_NONE);
1746- checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(2)\n"
1747- "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1688+ //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 1画面目、背景色塗に失敗しました。(2)\n"
1689+ // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
17481690
17491691 hr = God::_pID3DDevice9->StretchRect(
17501692 _pRenderTextureSurface, &_aRect_HarfRenderTargetBuffer[SECONDARY_VIEW],
17511693 _apBackBuffer[SECONDARY_VIEW], &_aRect_ViewScreen[SECONDARY_VIEW],
17521694 D3DTEXF_NONE);
1753- checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(2)\n"
1754- "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
1695+ //checkDxException(hr, D3D_OK, "FULL_SCREEN DUAL_VIEW 2画面目、背景色塗に失敗しました。(2)\n"
1696+ // "_pRenderTextureSurface="<<_pRenderTextureSurface<<"/_apBackBuffer[PRIMARY_VIEW]="<<_apBackBuffer[PRIMARY_VIEW]);
17551697 } else {
17561698 hr = God::_pID3DDevice9->StretchRect(
17571699 _pRenderTextureSurface, &_rectRenderTargetBuffer,
17581700 _apBackBuffer[PRIMARY_VIEW], &_aRect_ViewScreen[PRIMARY_VIEW],
17591701 D3DTEXF_NONE
17601702 );
1761- checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(2)");
1703+ //checkDxException(hr, D3D_OK, "FULL_SCREEN 背景色塗に失敗しました。(2)");
17621704 }
17631705 hr = God::_pID3DDevice9->Present(nullptr, nullptr, nullptr, nullptr);
1764- returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。(2)");
1706+ //returnWhenFailed(hr, D3D_OK, "Present(nullptr, nullptr, nullptr, nullptr)に失敗しました。(2)");
1707+_TRACE_("restoreFullScreenRenderTarget() 20");
17651708 //↑無駄な感じだが、VISTAとXPの2画面目フルスクリーンモード時
17661709 // 両対応させるのはこのようなコードしかないという結論。
17671710
17681711 //フルスクリーンのウィンドウ位置を補正
17691712 EnumDisplayMonitors(nullptr, nullptr, God::updateMoniterPixcoordCallback, (LPARAM)this);
1770-
1713+_TRACE_("restoreFullScreenRenderTarget() 21");
17711714 for (int n = 0; n < _num_adapter; n++) {
17721715 pixcoord full_screen_x = _paAvailableAdapter[n].rcMonitor.left;
17731716 pixcoord full_screen_y = _paAvailableAdapter[n].rcMonitor.top;
@@ -1779,6 +1722,8 @@ HRESULT God::restoreFullScreenRenderTarget() {
17791722 full_screen_x, full_screen_y, 0, 0,
17801723 SWP_NOSIZE);
17811724 }
1725+
1726+_TRACE_("restoreFullScreenRenderTarget() 23");
17821727 return D3D_OK;
17831728 }
17841729
@@ -2070,7 +2015,31 @@ void God::presentSpacetimeVisualize() {
20702015 CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT_BK;
20712016 CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH_BK;
20722017 CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT_BK;
2018+_TRACE_("pGOD->setDisplaySizeInfo(); begin");
2019+ pGOD->setDisplaySizeInfo();
2020+_TRACE_("pGOD->setDisplaySizeInfo(); done");
2021+_TRACE_("pGOD->setAppropriateDisplaySize(); begin");
20732022 pGOD->setAppropriateDisplaySize();
2023+_TRACE_("pGOD->setAppropriateDisplaySize(); done");
2024+
2025+ //バックバッファサイズ
2026+ if (CONFIG::FULL_SCREEN) {
2027+ if(CONFIG::DUAL_VIEW) {
2028+ //フルスクリーンモード・2画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2029+ _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN1_WIDTH;
2030+ _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN1_HEIGHT;
2031+ _paPresetPrm[_secondary_adapter_no].BackBufferWidth = CONFIG::DUAL_VIEW_FULL_SCREEN2_WIDTH;
2032+ _paPresetPrm[_secondary_adapter_no].BackBufferHeight = CONFIG::DUAL_VIEW_FULL_SCREEN2_HEIGHT;
2033+ } else {
2034+ //フルスクリーンモード・1画面使用 (フルスクリーンチェックで上書きされるかもしれない)
2035+ _paPresetPrm[_primary_adapter_no].BackBufferWidth = CONFIG::SINGLE_VIEW_FULL_SCREEN_WIDTH;
2036+ _paPresetPrm[_primary_adapter_no].BackBufferHeight = CONFIG::SINGLE_VIEW_FULL_SCREEN_HEIGHT;
2037+ _paPresetPrm[_secondary_adapter_no].BackBufferWidth = 0;
2038+ _paPresetPrm[_secondary_adapter_no].BackBufferHeight = 0;
2039+ }
2040+ }
2041+
2042+_TRACE_("SetWindowPos()!");
20742043 if (CONFIG::DUAL_VIEW) {
20752044 SetWindowPos(_paHWnd[_primary_adapter_no], NULL, 0, 0,
20762045 _paPresetPrm[_primary_adapter_no].BackBufferWidth,
--- /dev/null
+++ b/VioletVreath_launcher/RunVioletVreath_launcher.bat
@@ -0,0 +1,14 @@
1+set DATE_TMP=%DATE:/=%
2+set TIME_TMP=%TIME: =0%
3+set YYYY=%DATE_TMP:~0,4%
4+set YY=%DATE_TMP:~2,2%
5+set MM=%DATE_TMP:~4,2%
6+set DD=%DATE_TMP:~6,2%
7+set HH=%TIME_TMP:~0,2%
8+set MI=%TIME_TMP:~3,2%
9+set SS=%TIME_TMP:~6,2%
10+set SSS=%TIME_TMP:~9,2%
11+set DATETIME=%yyyy%%mm%%dd%%hh%%mi%%ss%_%sss%
12+set LOGFILE=%DATETIME%.log
13+VioletVreath_launcher_Win32_v100_Debug.exe 2>&1 >> %LOGFILE%
14+REM VioletVreath_launcher_Win32_v100_Release.exe 2>&1 >> %LOGFILE%
--- a/VioletVreath_launcher/src/VioletVreath_launcher.cpp
+++ b/VioletVreath_launcher/src/VioletVreath_launcher.cpp
@@ -512,3 +512,4 @@ INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
512512 //}
513513
514514
515+