SDL
特徴
- オープンソースのマルチメディアライブラリ。Windows/Linuxで使用可
画像表示(2D)・音楽再生・ジョイスティック・CDROMなど標準機能として対応
3Dの場合は、OpenGL を併用すべし
※2D<->3Dの行き来するのが難しくて挫折した orz わかる人補完よろ
- 本体のみだといろいろ足りないので、必要なものを外部ライブラリとして追加することが必要
- WebにはC言語やRubyでの説明が多いので使い方についてはそちらを参考にするのがよい
ライセンス
derelictSDL を使用すると
LGPLではなく boost licenseが適用DLLが遅延ロードされるだけ(3/10訂正)
- LGPL (+外部ライブラリのライセンス +それらが依存するライブラリのライセンス)
- たとえば、zlib1,libfreetype( SDL_ttf を使用する場合に必要 )は LGPLではない
- ライセンスをできるだけ簡単にしたい場合は
データ形式:BMP+GIF(透過GIF)+WAV
テキストをすべて画像化(フォント・テキストを使用しない)
することで LGPLにまとめることができる。やったね!
機能を補うための外部ライブラリ
derelictSDL を使用すると SDL_image, SDL_mixer, SDL_ttf のヘッダとインポートライブラリが一式揃う
それぞれの DLL本体および(あれば)依存ライブラリは別途入手すること
画像データ読み込み
- SDL_image
BMPとGIF→SDL_Image単体
依存ライブラリ: JPG,PNGを使用する場合、ライブラリの再コンパイルが必要。それに伴い同梱のライブラリに依存する
BGMデータの読み込み・ループ再生と効果音
- SDL_mixer
WAV→SDL_Mixer単体
依存ライブラリ: MP3,OGG,MIDIを使用する場合、ライブラリの再コンパイルが必要。それに伴い同梱のライブラリに依存する
文字表示(フォントの画像化)
※あらかじめ文字データをすべて画像データとして用意できるならそっちの方がオススメ
- SDL_ttf
依存ライブラリ: libfreetype, zlib1(同梱されているが、ライセンスが異なる)
- フォント指定はファイルの絶対パスで行う (例:"C:/Windows/Fonts/MSMINCHO.ttc")
フォントファイルを配布する場合はそのフォントのライセンスを確認すること
2D画像の回転・拡大縮小、点や線の描画
- SDL_gfx
- SDL_gfxはderelictに含まれない。また、バイナリ配布もされていないのでソース(C言語)からコンパイルが必要
- 他に良いものがあれば差し替えたい。自作するのも手。
データをzipにまとめる
→ std.zip
入手先
本体
- ヘッダ
- lib
derelictSDL http://www.dsource.org/projects/derelict を使用すればヘッダとインポートライブラリは揃う
外部ライブラリ(SDL_gfx以外)
- DLL
それぞれの公式サイトよりバイナリを入手
Rubyに同梱されているものを入手すると再ビルドの手間が省けるが、各ライブラリの依存先のライセンスに注意 - ヘッダ
- lib
derelictSDL http://www.dsource.org/projects/derelict を使用すればヘッダとインポートライブラリは揃う
外部ライブラリ(SDL_gfx)
- DLL
公式サイトよりソース一式を入手し
C言語のソースからビルドする - ヘッダ
Cヘッダからがんばって変換する- SDL_gfxPrimitives.h と SDL_rotozoom.h だけで足りるかも
- lib
DLLから吸い出す
使い方
とりあえず、最も注意すべき点を1点だけ
フォント表示処理の流れ
- ライブラリを初期化
- フォントファイルとサイズを指定
- テキストと色を指定して画像イメージ生成
- 画像イメージを回転・拡大縮小
- キャンバスへ貼り付け
1は前処理、2~3は随時処理、4~5は描画処理で行う
2~3は重いので描画更新処理に含めないこと