Re: フルスクリーンモードの挙動について ( No.1 ) |
- 名前:管理人 日時:2015/11/16 02:37
まだ現象の確認もできていませんが、なんとなく原因ではないかという候補は思いつきました
現在別件の不具合の対応もあり直ぐには対応できないかもしれませんが、
なるべく早く対応したいと思います m(_ _;m
|
Re: フルスクリーンモードの挙動について ( No.2 ) |
- 名前:管理人 日時:2015/11/18 01:44
私も手元に Surface Pro 3 があるので試してみました、
現在確認できるのは Windows11 + 内蔵ディスプレイ の環境のみですが、
Direct3D 11 を使用した際に画面を引き伸ばしての全画面表示になってしまうのは確認できました
ソフトウエア側ではモニタの解像度を変更しての全画面表示時に
「縦横比が維持されず全画面に引き伸ばされてしまう」のか「ドットバイドットで表示される」のか、
「縦横比を維持して全画面表示される」のかの情報を得る手段がないので、必ず縦横比を維持しての
全画面表示を行いたい場合は縦横比が維持されていることがほぼ間違い無いデスクトップ画面と
同じ解像度を使用して全画面表示をするという方法を採るしかありません
DXライブラリでは DxLib_Init の前に
SetFullScreenResolutionMode( DX_FSRESOLUTIONMODE_DESKTOP ) ;
という記述を増やすことでソフトウエア起動時のデスクトップ画面の解像度を使用して全画面表示を
するようになります( 描画は SetGraphMode で指定された解像度で行い、その結果をデスクトップ画面の
解像度に縦横比を維持しながら引き伸ばして表示を行います )
とりあえず Windows10 + 内蔵ディスプレイ の環境では上記の記述を増やすことで
縦横比を保った状態で全画面表示ができるようになりましたので、
よろしければ Citrineさんの環境でも同様の結果になるかお試しになってみてください m(_ _)m
尚、Direct3D 9Ex では縦横比を維持して全画面表示がされたとのことですが、
環境によっては Direct3D 9Ex を使用した場合も「ドットバイドットで表示される」場合や
「縦横比が維持されず全画面に引き伸ばされる」場合がありますので、必ず縦横比を維持した
状態で全画面表示をされたい場合は DxLib_Init の前に
SetFullScreenResolutionMode( DX_FSRESOLUTIONMODE_DESKTOP ) ;
を記述する方法を採ってください
因みにデフォルトの設定は SetFullScreenResolutionMode( DX_FSRESOLUTIONMODE_NATIVE ) ;
となっていまして、こちらはモニタの解像度を変更する方式なので、DX_FSRESOLUTIONMODE_DESKTOP のように
「デスクトップの解像度に引き伸ばす」処理が入らない分( 引き伸ばし処理をモニタに任せる分 )
DX_FSRESOLUTIONMODE_DESKTOP より DX_FSRESOLUTIONMODE_NATIVE の方が高速に動作します
なので正常に動作している限りでは DX_FSRESOLUTIONMODE_DESKTOP を使用するより
DX_FSRESOLUTIONMODE_NATIVE を使用した方が良いということになります
ただ、前述の通り正常な表示が行われるかどうかはソフトウエア側では知る術が無いので、
ソフトウエア側でできる最良の処理としては
「デフォルトでは DX_FSRESOLUTIONMODE_DESKTOP で起動するようにして、
オプション設定で DX_FSRESOLUTIONMODE_NATIVE で起動するようにもできるようにしておく」
になると思います
面倒で申し訳ありません・・・ (_ _;;
 |
Re: フルスクリーンモードの挙動について ( No.3 ) |
- 名前:Citrine 日時:2015/11/20 23:41
素早い返信ありがとうございます。
こちらの環境でも、Windows 10と内蔵ディスプレイの環境にて縦横比を維持しての全画面表示が確認できました。
外部ディスプレイへの出力に関しては、縦横比は維持しているものの、画面外にはみ出す現象は直りませんでした。
ところが、手元にある別のディスプレイに出力してみたところ、画面外にはみ出る現象が発生しないことがわかりました。
改めて検証を行ったのですが、現象が発生したほうのディスプレイ(Panasonic製のプラズマテレビ)では、1080pに設定しているにも関わらず720pで出力されていることがわかりました。
解像度やスケーリング、垂直同期周波数を同じに設定しているにもかかわらずディスプレイによって出力結果に違いが出るのがとても不可解でなりません。
また、Windows 8.1の時に正常動作していたアプリケーションが、Windows 10では画面外にはみ出すようになっていたことから、OS側で何かしらの仕様変更があったのかもしれません。
重ね重ね申し訳ありませんが、これは環境依存として諦めるしかないでしょうか
|
Re: フルスクリーンモードの挙動について ( No.4 ) |
- 名前:管理人 日時:2015/11/22 20:02
> 重ね重ね申し訳ありませんが、これは環境依存として諦めるしかないでしょうか
現時点では環境依存なのかそうではないのかは判断できません
私の手元でも Surface Pro 3 から外部出力で 1080p の解像度の画面を出力してみましたが、
画面がはみ出すこと無く表示されました
ところでプログラムを実行する前はデスクトップ画面が外部出力のディスプレイ(Panasonic製のプラズマテレビ)に
表示されていると思うのですが、その時点では 1080p で出力されているのでしょうか?
もしデスクトップ画面を 1080p 解像度に設定しているにも関わらずディスプレイ(Panasonic製のプラズマテレビ)には
720pで出力されているとしますと、OS又はディスプレイ(Panasonic製のプラズマテレビ)が原因ということになり
DXライブラリ側ではどうすることもできませんので、環境依存の問題ということになります
|
Re: フルスクリーンモードの挙動について ( No.5 ) |
- 名前:Citrine 日時:2015/12/10 22:33
お返事大変遅くなってしまい、申し訳ありませんでした。
デスクトップは1080pで出力されているのですが、
アプリケーションの起動中だけはみ出る状態です。
ただ、DirectXを使用した別のプログラム(DXライブラリでない)でも同様の現象が発生し、
DirectX自体の問題の可能性が強いことが分かったため、今回は環境依存ということで諦めることにしました。
お忙しい中お付き合いいただき、ありがとうございました。
|