トップページ > 記事閲覧
フルスクリーンモードの挙動について
名前:Citrine 日時: 2015/11/14 14:00

フルスクリーンモードの挙動について少し気になる点があります。 Surface Pro 3にてフルスクリーンモードを使用した際の挙動が、OSと使用するDirect3Dのバージョンによって変わります。 内蔵ディスプレイでは ・Direct3D 9Ex Windows 8.1、10ともに縦横比を維持して全画面表示 ・Direct3D 11 Windows 8.1:ドットバイドット表示(たまにフルスクリーンにならず、デスクトップ上に表示されることがある) Windows 10:画面を引き伸ばして全画面表示 外部ディスプレイでは ・Windows 8.1 縦横比を維持して全画面表示(Direct3D 11は未確認) ・Windows 10 画面をはみ出して全画面表示(Direct3Dのバージョン問わず) と、かなり不自然な挙動をします。 別のデスクトップPC(Windows 10)では上記の挙動が再現されません。 Direct3D 11でも9Exと同じように動かす方法はないでしょうか。 使用しているDXライブラリのバージョンは3.15cです。
メンテ

Page: 1 |

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自体の問題の可能性が強いことが分かったため、今回は環境依存ということで諦めることにしました。 お忙しい中お付き合いいただき、ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存