Allegro5.07メモ

  概要
(ドキュメント読んだ概要をかいつまんだもの, まだAllegro5.0.7ビルドやコンパイルを試してないため、未検証の内容です!!)
Allegro5.0.0RC〜5.0.7までの状況をおおまかにつかむためのもの。

現在Allegro5.0.0系は、安定版(バグ出し中心)。 Allegro 5.1系は開発版(仕様がめまぐるしく変わる)に分かれている。
この2つの系統はそれぞれソースレベルで互換性があるが、作成されたバイナリには互換性が無いとのこと。
5.0.0RC版から、多くとも 13箇所追加、 名称変更が3カ所程度ある?(5.1系重複含む)。

また、バージョン管理システムを SVG → GIT に変えたようです。

5.07付属テキストの日本語訳
iphoneビルドの手引き
pkgconfigの手引き
makeの手引き
macosx版諸注意の手引き
Pythonで使う(テスト版)の手引き
パッケージングの手引き
MSVCの手引き
cmakeの手引き

Allegro5.0.7ののライセンスファイルには、Allegroのライセンスとあわせて、Allgro4.9.8以降で導入されたbstrlib(BSD)と  DejavuFontのライセンスが合わせて書かれている
bstrlibはバッファオーバーフローを防ぐ仕組み。BetterStringLibraryと呼ばれる。
DejavuFont は CHKグリフ以外の全ての文字を網羅したフォントのこと。


MacOSX環境でallegro5をビルドするには Clang とCMake が必要。それには Xcodインストールする必要がある。
Clangは アップルが2000代中盤以降からgccを置き換える目的で採用したC言語系コンパイラでのフロントエンドで、Xcodeに付属するLLVMの一部
最終的に、GCCよりも性能の良いコンパイラを目指している。
Allegroのビルド時には、gccの代わりにClangを使用しているので、CMakeを利用する際にClangのファイルパスを指定する必要がある(GUI,CUIどちらでも)。

The Better String Library
Clang - Wikipedia
DejaVuフォント - Wikipedia

★al_init →  al_init_各アドオン名_addon → al_install_各デバイス → create display の流れで初期化
al_clear_to_colorで画面内容消去、ビットマップになにか書いたり、回転移動させたり、画像をビットマップとしてロードした後は、 sl_flip_dipay関数を使用することで画面に表示する。
その繰り返しで画面が変化する。


★フォントを利用するには、al_init_imageと al_init_ttfを事前に実行しておく必要があるとのこと。そのうえでフォントをロード。

★ビットマップ描画
図形を描画するプリミティブ関連のAPIは大きく2分けて ローレベル(  長方形, 楕円、直線などの関数が用意されている  )とハイレベルの( 引数にターゲットビットマップを指定して描画 )の2つに分類できる。
ローレベルのプリミティブAPIは、al_target_bitmapで指定したビットマップに対して描画が行われ、個別にどのビットマップに描画するかの指定しなくてもいい。
これらのことから、Allegroでは描画対象となるビットマップを切り替えながら、描画コマンドを使用する使い方をするようです。

★半透明処理
乗算やハードライトなどを実現する半透明処理(blending)は al_set_target_bitmapと同様に  sl_store_state と al_restore_state によって 半透明描画モード  Allegroシステムの状態を保存しながら使用するのがよいとある。

★オーディオ関連
オーディオ関連は、メモリに全部音楽データを展開するsample と 一部だけを読み込むstream の二種類の再生方法がある。
また、stream と sampe に対して、ゲインや周波数や深度パラメータを加工するmixer や 再生位置などを司るvoice の組み合わせをアタッチする仕組みは健在。
ただし、sampleは、mixer等と接続する場合に限り sample_instance としてアタッチする必要がある。

★各OSネイティブのダイアログを出すことができる。

★イベントドリブン方式
display, keyboard, mouse, joystick , timer などがある。これらは al_install_なになに 関数で初期化し、 al_register_event_srcで登録するらしい。
display イベントはウインドウがリサイズした時に発生する(これを有効にするには、ディスプレイかウインドウにリサイズフラグを与えておくらしい)
al_wait_for_event または al_get_next_event を利用して取得する。


★Python ラッパー
ドキュメントによれば、allegro本体ビルド時に、Python対応のフラグを有効にしておいて、ソース内にある allegro.pyを呼び出すとできるらしい。
ただし、Allegroの全定数と関数を単純に書き出したものなので、すべてがそのまま動くわけではない。
引数を渡す場合にもまだ完全でない部分がある、と書かれている。


Tsukubado