es_screen命令とフルスクリーン
DX 2013/4/17(Wed) 23:32:00|NO.53564
HSPDXFIXで画面を初期化する際、デバック中はウィンドウモードで行なっていたのですが、
ある程度形になったのでフルスクリーンで動作させたとところ、
16:9の比率の解像度を正確にフルスクリーン表示できないことに気が付きました。
何種類か解像度を試した結果、ディスプレイ解像度と同じ1920×1080ではきちんとモニタ全域を使ってフルスクリーン表示を行えますが
それ以外の16:9の解像度ではモニタの左右端に黒縁が発生し、その分だけ
画像が圧縮されて表示されてしまいます。
最近は普通にワイドスクリーンが使われているので16:9の解像度を採用したかったのですが、
フルスクリーンにする際、es_screen命令は実質4:3の解像度のみサポートしているということでいいのでしょうか?
KA 2013/4/17(Wed) 23:52:00|NO.53565
まずウィンドウモードで16:9の比率に出来ますか。
DX 2013/4/17(Wed) 23:53:07|NO.53566
>>KAさん
はい
ウィンドウモードでは1280*720でやっていました
それをフルスクリーンにしようとして判明した次第です。
KA 2013/4/18(Thu) 00:48:00|NO.53567
良く読んでいなかった、ちなみにこの場合は解像度とは言いません。
1920*1080・・・画素数です。
16:9・・・画面比率です。
物理的な画面サイズに対する画素密度が解像度です。
>>ディスプレイ解像度と同じ1920×1080ではきちんとフルスクリーン
1920:1080 = 16:9
>>それ以外の16:9の解像度ではモニタの左右端に黒縁が発生し縦長
別のモニターという意味かな、具体的な画素数はいくらですか。
>>実質4:3の解像度のみサポートしているということ?
1920×1080が表示出来ていますよ。
------------------------------------
モニターは同じで表示モードを変えただけなら、モニター自体の設定や
ドライバーの設定で、そうなる可能性もあります。
あと、CRTか液晶かでも変わります。
DX 2013/4/18(Thu) 01:31:47|NO.53568
使っているのは同じモニター(1980*1080)です
>1920×1080が表示出来ていますよ。
1980*1080以外では正常に表示されないので実質非対応ということですか? と質問させて頂きました
KA 2013/4/18(Thu) 16:45:14|NO.53570
>>同じモニター
ますます意味が分かりません、異なるモニターをつないでください。
液晶モニタ自体の画素数と比率以外のモードで、表示させようとしているのでしょうか。
暇人 2013/4/18(Thu) 19:46:46|NO.53574
HSPDXFIXとは関係なくグラフィックドライバ側の設定なんじゃ?
(DirectX7側にアスペクト比保持などの命令は無い)
解像度変更や全画面表示で黒枠が出たら (ATI Radeon/NVIDIA Geforce)
http://coffee17.blog89.fc2.com/blog-entry-376.html
ディスプレイの型番も接続方法も書いてないのでディスプレイ側の設定の可能性もあるが・・・
DX 2013/4/23(Tue) 18:50:07|NO.53627
>KAさん
ますます意味がわからないとはどういうことでしょうか?
普通ゲームやアプリケーションは一つのモニタでウィンドウモードやフルスクリーンに対応してますよね?
それと同じ事をやろうとしているだけなのですが…?
もしかしてKAさんはわざわざ異なるモニタでやっているのでしょうか?
>暇人さん
ドライバの方からもチェックしてみることにします
暇人 2013/4/23(Tue) 20:07:39|NO.53633
まず解像度の変更に失敗した場合es_screenはエラーを返す
エラーがでずに画面いっぱいに表示されないとか比率が違うならディスプレイやPC側の問題です
これで自分の環境では問題なくフルスクリーン表示される
#include "hspdx.as"
screen 0,1280,720
es_ini ; system初期化
onexit *owari
es_screen 1280,720,32,,0,1 ; スクリーン初期化
if stat=1 : goto *dderr1
if stat=2 : goto *dderr2
goto *start ; 正常に完了
*dderr1
dialog "DirectXの初期化に失敗しました。",1
end
*dderr2
dialog "スクリーンの初期化に失敗しました。",1
end
*dderr3
es_bye
wait 100
dialog "VRAMの容量が不足しています。",1
end
;------------------------------------------------------------------
*start
buffer 3
picload dir_exe+"\\sample\\hspdx\\hspdx.bmp"
es_buffer 0,2,0,0,1
if stat : goto *dderr3
*main
stick ky,$1f ; カーソルキーの情報を取得
if ky&$80 : goto *owari //[Esc]で終了
pos 0,0
es_excopy 0,0,0,640,480,1280,720
pos 1280/2-640/2,720/2-480/2
es_excopy 0,0,0,640,480,640,480,,,,es_bfcalc(ESB_SRCCOLOR ,ESB_ONE),128
es_sync 16 ; 画面の更新
await 0 ; タスク更新
goto *main
*owari
es_bye
end
KA 2013/4/23(Tue) 23:05:21|NO.53635
>>ディスプレイと同じ1920×1080ではモニタ全域を使ってフルスクリーン可能
>>ウィンドウモードでは1280*720でやっていた
>>16:9の解像度を採用したかった
だから両方とも16:9ですよ。
>>それ以外の16:9の解像度ではモニタの左右端に黒縁が発生しダメ
それ以外の解像度とは具体的になんでしょう。
モニターが同じならフルスクリーンは1920×1080ですよ。
そのモニターで4:3表示させようとしていませんか。
それなら両側に黒帯が出来るでしょう。
KA 2013/4/23(Tue) 23:24:47|NO.53637
ちなみに、1920×1080が最大解像度で、16:9は比率です。
匿名希望 2013/4/26(Fri) 18:35:19|NO.53646
横レスで申し訳ない。
>>KAさん
揚げ足取りばかりで、回答する気が無いと思われかねないレスは好ましくないと思いますがいかがでしょうか?
間違いを指摘するのも大事ですが、ある程度は質問者の意図を汲み取る姿勢も必要だと思います。
KA 2013/4/26(Fri) 19:03:13|NO.53647
>>揚げ足取りばかりで、回答する気が無いと思われかねないレス
>>ある程度は質問者の意図を汲み取る姿勢も必要
質問者の意図が理解できないから、回答出来るか判断するために
詳細を聞き出す必要があります。それが「揚げ足取り」に受け取
られる事もあるでしょう。
意を汲んで回答しても、「そういう意味じゃないんです」と言わ
れると無駄骨です。的確な質問内容なら無駄なレスはしません。
skyblue 2013/4/26(Fri) 20:32:46|NO.53648
es系の解像度ってもしかしたら画面の表示するサイズなのでは?
確かにウインドウモードでは同じ指定でも黒帯が表示されませんが
フルスクリーンでは黒帯が表示されましたし。
暇人 2013/4/26(Fri) 21:21:09|NO.53649
es系とか関係ない(HGIMG3でも同じ結果になるはず)
ディスプレイと比率が同じでも帯が出るならPC側の設定
接続がアナログならモニター側の方の設定の可能性もある
>フルスクリーンでは黒帯が表示されましたし。
最大1920*1080のモニターにデジタル接続でNO.53633を実行して
帯が出るならPC設定の問題
640*480でフルスクリーンにして左右に帯がでるのはモニターやPCの設定(比率保持なら出て当然だが)
skyblue 2013/4/27(Sat) 06:58:27|NO.53652
>最大1920*1080のモニター
自分のディスプレイの最大画面解像度は1280×1024ですけど
ちなみにデジタル接続
暇人 2013/4/27(Sat) 07:49:08|NO.53653
>自分のディスプレイの最大画面解像度は1280×1024ですけど
それだけではなんとも・・・
どの解像度で初期化したのかも分からないし・・・
そのモニターでNO.53633のを実行して上下に帯が出た場合比率保持したいなら普通の結果
比率を変えても全画面にしたいならPC、モニタ側の設定で変えられる
HSPDXFIXどうこうとは一切関係ない
グラフィックドライバがATI系の自分の環境だとGPUスケーリングを有効にすると
モニター側の解像度は最大解像度(1920*1080)に固定される(モニタ側の表示で確認)
見た目の表示は他の設定次第だが、初期化の解像度通りのフルスクリーン画面になる
skyblue 2013/4/27(Sat) 21:42:02|NO.53662
質問者さんはそもそもフルスクリーンで何する気なのでしょうか?
たいていは640×480で十分だと思いますけど、
ZAP 2013/4/28(Sun) 11:11:28|NO.53667
今作っているゲーム画面の大きさが1280*720で、
それがフルスクリーンにしたときに綺麗に引き伸ばせないのであれば
やはりグラフィックボードのドライバがそのドット数のフルスクリーンに
対応していないのではないでしょうか?