Nanashi-softプログラマ専用PS3 Linux SDL


◇PS3 Linux SDLでプログラミング -コンソール画面に描画する-

○画面が乱れる理由

SDL_Surface *screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_FULLSCREEN);
のような記述で画面初期化を行うのですが、実はSDL_FULLSCREEN が無効になっています
PS3 Linuxでは、画面モードをソフトから切り替える事ができません(Fedora Core 5にて確認)

ですから、現在の画面に合わせて初期化を行う必要があります

○現在の画面モードを知る方法

以下のコマンドを実行してみて下さい

fbset

そうすると、ずらっと文字が表示されます

mode "576x384-60"
    # D: 13.271 MHz, H: 23.040 kHz, V: 60.000 Hz
    geometry 576 384 576 384 32
    timings 75352 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

modeの後ろに出ている 576x384が縦横ドット数です
色深度は、rgbaがそれぞれ 8ビットと出ていますので、32ビットになります

ですから、この場合は、
SDL_Surface *screen=SDL_SetVideoMode(576,384,32,SDL_SWSURFACE|SDL_FULLSCREEN);
と記述すれば良いです

○デフォルト画面モードで描画できない問題の対策

Fedora Core 5のデフォルト起動モードは 480iか 480pです
ですが、この画面モードでは正しく描画できません

その理由を調べていた所、どうやら SDLは /etc/fb.modesの内容を見ているようだと言う事がわかりました
そして、そのファイルに画面モード 576x384の記述が無い為に、うまく描画できないのです

そこで、以下のコマンドで /etc/fb.modesに fbsetで表示された内容を追記します
このコマンドは、表示されない画面モードで表示している時に実行して下さい

fbset >> /etc/fb.modes

【注意】>>は必ず2つ必要です! 1つだけ記述するとファイルが壊れてしまいます!

これで SDLから認識可能になりました


TOPプログラマ専用PS3 Linux SDL