SDL2で出来る事メモごく一部

http://www.libsdl.org/

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 関数を好きなだけ呼べば好きなだけウィンドウが作れる. AndroidiOSではどうなるんだろう

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 単体でやっても良いかもしれない.

複数ウィンドウは少なくともゲームを作る上において役に立つのかイマイチわからない.

他にも色々変わった点があるのをチマチマ調べ中.