> こちらを利用することでほぼ理想通りの動きになることを確認できました。ありがとうございます。
> 仰る通り拡大率関連の関数追加や仕様変更などは不要かと思います。
了解です
> 参考程度にお伺いしたいのですが、フルスクリーン化せずにソフトウェアを終了するまでの間だけ
> 特定のディスプレイのリフレッシュレートのみを変更する手段などは何かあるでしょうか…?
DXライブラリにはソフトウェアレンダリングモードがあり、ソフトウェアレンダリングモードでは
DirectX を使用しないので、フルスクリーンモードを実現するために Windows標準の解像度変更機能を
使用しているのですが、それがこちらの API になります
<ChangeDisplaySettings>
https://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-changedisplaysettingsa
例えば 640x480 60Hz の画面に変更する場合は以下のように記述します
DEVMODEA DevMode ;
memset( &DevMode, 0, sizeof( DevMode ) ) ;
DevMode.dmSize = sizeof( DevMode ) ;
DevMode.dmPelsWidth = 640 ;
DevMode.dmPelsHeight = 480 ;
DevMode.dmBitsPerPel = 32 ;
DevMode.dmDisplayFrequency = 60 ;
DevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY ;
ChangeDisplaySettingsA( &DevMode, CDS_FULLSCREEN ) ;
上記では解像度とカラービット深度も指定していますが、以下のようにリフレッシュレートのみを変更する
指定をすればリフレッシュレートのみ変更できます
DEVMODEA DevMode ;
memset( &DevMode, 0, sizeof( DevMode ) ) ;
DevMode.dmSize = sizeof( DevMode ) ;
DevMode.dmDisplayFrequency = 120 ;
DevMode.dmFields = DM_DISPLAYFREQUENCY ;
ChangeDisplaySettingsA( &DevMode, CDS_FULLSCREEN ) ;
> 残念ながら問題が再現してしまいました…
お試しいただきありがとうございます、駄目でしたか… orz
> こちらに関しては環境依存の問題と考えておりますので細かく調査・解決しておく必要はないかと思っております。
> より詳しい再現条件などがはっきりしましたらまた報告させていただきます。
すみません、よろしくお願いいたします