Nanashi-softプログラマ専用Mac OS X gcc SDL


◇Mac OS Xでgcc+SDL -ウィンドウ表示-

SDLはフルスクリーンモードでの描画を前提として開発されているようです
よって、基本機能にウィンドウ表示時の制御は無いと考えて下さい

○ウィンドウサイズ

SDL_SetVideoMode(「横サイズ」,「縦サイズ」,「色深度」,SDL_SWSURFACE);

ウィンドウの描画領域を「横サイズ」×「縦サイズ」にて表示します
ですからタイトルバーとフレームの分、これよりサイズが大きくなる事になります

「色深度」は、現在のほとんど全てのパソコンは32bitなのですが、稀に16bitの場合があります
ゲームを作る上でマイナーな環境を考慮すると、パフォーマンスが低下するので、32bitカラー用に固定するのが良いでしょう

○SDL_SetVideoModenoのオプション

・固定ウィンドウ
SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
ウィンドウサイズは変更できず。最小化と閉じるボタンのみ表示されます

・可変ウィンドウ
SDL_SetVideoMode(640,480,32,SDL_SWSURFACE | SDL_RESIZABLE);
最初のサイズ640×480で、ユーザーがウィンドウサイズを自由に変えられます。最大化ボタンも表示されます
SDL_RESIZABLEイベントに変更後のサイズが届くので、それを見て表示を制御します

ちなみにフルスクリーンは
SDL_SetVideoMode(640,480,32,SDL_SWSURFACE | SDL_FULLSCREEN);
但し、おかしなモードにするとディスプレイを壊す可能性があるので、このようなサイズ決め打ち指定は推奨されません

あと、ウィンドウモード時に、SDL_HWSURFACEやSDL_DOUBLEBUFでビデオメモリを割り当てるのは避けて下さい
その辺りの制御はOSの仕事ですので、余計な事をすると誤動作の原因になるようです

○タイトルバー

SDL_WM_SetCaption(「文字列」, NULL);

どこに記述しても構いません
この関数が呼び出された瞬間に変わります

日本語で表示したい場合はUTF-8で書いて下さい
手っ取り早いのは、ソースをUTF-8で保存する事です
但し、エスケープコードを記述した際に具合が悪い場合があります。例えば \nとか……
UTF-8で \を入力すると、\と言う文字として認識されます。元々エスケープ記号はバックスラッシュなので、正しい動作です
これを回避するには、シフトJISで \を入力して、それを UTF-8で保存する。そうすると半角バックスラッシュで表示されます。こうして作った半角バックスラッシュをコピーして使うと良いです

タイトルだけなので、根性で乗り切る事も可能です
例えば「あ」のUTF-8コードを調べて
char s[4];
s[0]= 0xe3;
s[1]= 0x81;
s[2]= 0x82;
s[3]= 0;
SDL_WM_SetCaption(s, NULL);
こんな感じでやってもちゃんと表示されました(笑)

○メニューバー、ステータスバー、ツールバー

……などという機能はありません
必要な人は拡張ライブラリを探してみましょう


TOPプログラマ専用Mac OS X gcc SDL