画面の解像度一覧の取得

 fbset で現在の解像度の情報を表示はできます。しかし、変更可能な解像度の一覧を取得する方法が見つかりませんでした。

 SDL を使うと、一覧を取得できます。そこで、解像度の一覧を取得するプログラムを書いきました。

 使っているモニタのモード一覧は次のようになりました。

Display Mode List(14):
1920 x 1080 : Pixel Aspect 0.900000, 24bpp, 60 Hz
1920 x 1080 : Pixel Aspect 0.900000, 24bpp, 50 Hz
1920 x 1080 : Pixel Aspect 0.900000, 24bpp, 30 Hz
1920 x 1080 : Pixel Aspect 0.900000, 24bpp, 25 Hz
1280 x 800 : Pixel Aspect 1.000000, 24bpp, 60 Hz
1280 x 720 : Pixel Aspect 0.900000, 24bpp, 60 Hz
1280 x 720 : Pixel Aspect 0.900000, 24bpp, 50 Hz
1024 x 768 : Pixel Aspect 1.200000, 24bpp, 60 Hz
800 x 600 : Pixel Aspect 1.200000, 24bpp, 60 Hz
720 x 576 : Pixel Aspect 1.280000, 24bpp, 50 Hz
720 x 576 : Pixel Aspect 1.280000, 24bpp, 25 Hz
720 x 480 : Pixel Aspect 1.066667, 24bpp, 60 Hz
720 x 480 : Pixel Aspect 1.066667, 24bpp, 30 Hz
640 x 480 : Pixel Aspect 1.200000, 24bpp, 60 Hz
Current Display Mode
1280 x 800 : Pixel Aspect 1.000000(1280), 24bpp, 60 Hz

 plane な解像度(カレントの解像度)は 1280 x 800 で、このときのピクセルアスペクト比を 1 として計算しています。

 これを見ると、Akane は、ベースの解像度は、640 x 480 なので、普通にフルスクリーンにすると、ピクセルアスペクト比は 1.20 になり、横に (20%) 引き伸ばされることになります。

 これを 720 x 480 の解像度にして左右に 40 pixel(720 – 640 の半分) の余白を設けています。このときでも、僅かなので気にならない程度ではありますが、ピクセルアスペクト比は 1.0667 なので、まだ横に (7% 程度) 引き伸ばされていることになります。

 ピクセルアスペクト比が 1 でちょうどよい解像度はないのでこれが限界です。

 SDL_WINDOW_FULLSCREEN_DESKTOP では、解像度を変えずにスケーリングしているのでアスペクト比が崩れることはありませんが、補完処理などはしていないので若干粗くなっています。

Akane

Posted by sirius