SDL2で出来る事メモごく一部
SDLのバージョン2が出ると同時になんかサイトもオシャレになってるので, チマチマWikiを眺めてて知ったことをメモ.
尚,この記事は http://wiki.libsdl.org/ に書いてあること以上の内容はありません.
ios, Android サポート
http://wiki.libsdl.org/Introduction
すごい.
つまりSDLで書くだけで
の5プラットフォーム対応出来る
複数ウィンドウが作れる
SDL_Window *sdlWindow = SDL_CreateWindow(title,
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
0, 0,
SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_CreateWindow 関数を好きなだけ呼べば好きなだけウィンドウが作れる. AndroidやiOSではどうなるんだろう
Accelerated 2D render API
グラフィックまわりはよくわからないのだけど, 要するに 2D 描画周りが早くなったらしい.
ついでに SDL1.2 までは出来なかった基本図形描画も出来るようになった.
垂直同期
http://wiki.libsdl.org/SDL_CreateRenderer
SDL1.2までは OpenGL 併用でないと出来なかった垂直同期が, SDL単体で可能となった.
UserEvent
http://wiki.libsdl.org/SDL_UserEvent
timestamp と windowID が増えた.
MsgBox
http://wiki.libsdl.org/SDL_ShowSimpleMessageBox
シンプルなメッセージボックスが入った.地味ながらこういうのは嬉しい. WinAPIを叩かずに出せるし,標準であるということはこれを使えば他プラットフォームでも動いてくれる(はず)
フルスクリーン
http://wiki.libsdl.org/SDL_SetWindowFullscreen
SDL_WINDOW_FULLSCREEN_DESKTOP で,最近のアプリによくある画面解像度を変えないフルスクリーン化が出来る.
ただし,画面サイズもディスプレイの解像度と一致するように変わってしまう. 画面サイズが変わっても見た目を変えたくない時は Renderer に
SDL_RenderSetLogicalSize(renderer, 640, 480);
のように指定してやればよい. これをすれば解像度をどうやっても同じように扱えるしアス比固定も勝手にやってくれる.
GamePad
http://wiki.libsdl.org/CategoryGameController
ジョイスティックのラッパーで,ボタン定義とかが出来るらしい? Steamのゲームだと勝手にマッピングしてくれるらしい.
雑感
SDL1.2 の頃まではどうせ結局描画には OpenGL 使う感じだったけど, 基本図形描画,アルファブレンディング,垂直同期周りも SDL の基本機能に入ったので 2Dゲームを作るのなら SDL 単体でやっても良いかもしれない.
複数ウィンドウは少なくともゲームを作る上において役に立つのかイマイチわからない.
他にも色々変わった点があるのをチマチマ調べ中.