SDL

Last-modified: 2011-03-10 (木) 19:04:38

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

入手先

本体

公式サイトhttp://www.libsdl.org/

外部ライブラリ(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. キャンバスへ貼り付け

1は前処理、2~3は随時処理、4~5は描画処理で行う
2~3は重いので描画更新処理に含めないこと