cd allegro-4.2.0
chmod +x fix.sh
./fix.sh macosx
make
sudo make install
sudo make install-framework EMBED=1
sudo make install-template
chmod +x fix.sh | fix.sh に実行権限を与える。 |
./fix.sh macosx | OSXにインストールできるよう最適化する |
sudo make install | 動的ライブラリ(.dylib)として インストールされる。 |
sudo make install-framework EMBED=1 |
このオプションを有効にすると、アプリに埋込み可能なフレームワークとしてインストールされます。 |
make install-applehelp | アップルのヘルプビューアにAllegroマニュアルを追加する(英語)。 |
sudo make install-templat | Xcode用のプロジェクトの テンプレートをインストールします。
「新規プロジェクト作成」にAllegroアプリ開発の項目が追加されます。 |
export STATICLINK=1 | 静的ライブラリとしてインストールする場合はこのコマンドも入力します。 |
export DEBUGMODE=1 export PROFILEMODE=1 | それぞれ、デバッグモード, プロファイルモードでインストールを準備します。 デバッグ版は エラーログやASSERT機能などが用意されているらしい。 |
export STATICLINK=1○make を途中でやり直す場合
make
sudo make install
make cleanと入力することで、作業時のファイルを片付け、最初の状態にすることができます。
sudo make uninstallと、入力します。(※アンインストールするには、既にmakeが通っている必要があります。)
ld: can't locate file for: -lalleg_sこのようなエラーが出るのは、Allegroの静的ライブラリ版がインストールされていないのが原因です。
make: *** [Demo] Error 1
Link (dyld) error:
dyld: /Users/xcode/remings/build/remings.app/Contents/MacOS/remings
can't open library: @executable_path/../Frameworks/Allegro.framework/Versions/4.1.18/Allegro (No such file or directory, errno = 2)
↑Allegro4.2.0 をインストールした後に、Allegro4.1.18 の時に開発していたプロジェクトを実行した。
RytPaint(5243,0x182b200) malloc: *** Deallocation of a pointer not malloced: 0xf0080a4; This could be a double free(), or free() called with the middle of an allocated block; Try setting environment variable MallocHelp to see tools to help debugAllegro は すべての ストラクチャなどに割り当てられたメモリを、終了時のEND_OF_MAIN();マクロによって自動的に解放しています。 そのため、プログラム中でメモリを手動で解放するdestroy系関数が呼ばれていれば、二重にメモリを解放することになるようです。
このメッセージが表示されても、プログラムは正常に終了しますが、メモリを手動で解放するdestroy_系関数をコメントアウトしておけば、一応出なくなります。しかし、Windows, Unix, MacOS X 以外の、END_OF_MAIN();マクロに未対応のプラットフォームを考慮すると、destroy_系関数は必要です。
// destroy_bitmap( cursor );
// destroy_rle_sprite( cu_pat );
【基本部分】【コンフィグ】
- exhello.c - シンプルな "hello world" プログラム。ライブラリ、ウインドウ、グラフィクの初期化方法
【DATAFILE】
- exconfig.c - exconfig.ini からコンフィグデータを読み込む by Lennart Steinke
【Allegro GUI】
- exdata.c - データファイルにアクセする。四角形と大きなフォントと小さいフォントを描画
- exexedat.c - 作ったアプリケーションにdatafiles を追加する , by Grzegorz Hankiewicz
- exfixed.c - 小数点を使った計算のデモ
【出入力】
- excustom.c - カスタムGUI オブジェクトを作る
- exgui.c - GUI 表示してみる。プルダウンメニュー、ラジオボタン、チェックボックス、セレクトメニューなど
- exrgbhsv.c - RGB < -> HSV 色空間の変換 ( GUI スライドバーを動かして色を調整することができる)
【オーディオ】
- exjoy.c - ジョイスティックからの入力 by Grzegorz Hankiewicz
- exkeys.c - キーボードを使った入力を検出する(終了するにはESCキーを長押しする)
- exsyscur.c - システムカーソルの表示
- exmouse.c - マウスによる入力を検出する ボタンやクリック位置など。画像をつかったカーソル等。
【スプライト】
- exsample.c - デジタルサンプリング音源の再生
- exstream.c - オーディオストリームの再生
- exmidi.c - MIDI ファイルを演奏する ./exmidi song.mid で song.mid を演奏。再生時間、ドライバ、再生ファイル名を表示
- exdodgy.c - MIDIプレーヤを使って面白い効果を試す。これは DOS環境 でしか動作しません。
【グラフィック】
- exsprite.c - データファイルとスプライトアニメーション by Grzegorz Ludorowski
- exshade.c - グローシェ-ドスプライト by Patrick Hogan
- exalpha.c - 32 bitカラーで半透明スプライト。 set_write_alpha_blender 関数を使用した描画。
【スクリーン】
- exscale.c - PCX と BMP ファイルをロードして画像を拡大表示する by Grzegorz Ludorowski
- exxfade.c - truecolor 画像のロードと フェード効果 ./exxfade allegro.pcx
- exbitmap.c - PCX と BMP フォーマットのファイルをロードし表示 ./exbitmap allegro.pcx
- expat.c - sub-bitmap と drawing modeを使ったパターン表示
- extrans.c - 照明効果 及び 半透明効果のデモ by Owen Embury
- exblend.c - truecolorモードでブレンド半透明効果。2つの画像が消えたり現れたりオーバーラップする。
- expal.c - カラーパレットを変化させるアニメーション効果
- excolmap.c - カラーマップテーブルによるエフェクト by Grzegorz Hankiewicz
- extruec.c - truecolor pixel format への転換
- exlights.c - hicolor ビデオモード で、照明効果 を行う方法のひとつ
- exmem.c - メモリビットマップ上でパターンを描いてから、スクリーンへ描画。画像転送の基本処理。
- exaccel.c - VBE/AFオフスクリーン処理。ねずみの画像が移動。多重レイヤとスプライトの参考に。
- ex12bit.c - fake 12-bit truecolor on an 8 bit card, by Richard Mitton
【Allegro3D】
- exscroll.c - ハードウェアスクロールと分割画面
- exflame.c - ビデオメモリに直接書き込む場合の処理速度の比較。炎が燃え上がるデモ
- exflip.c - mode -X を使った、ダブルバッファリングと ページフリッピング
- exupdate.c -スクリーン更新の比較。 ダブルバッファ、トリプルバッファリングなど。 ./exupdate 1〜4
- exdbuf.c - VGA mode 13h 画面でダブルバッファ表示
- ex3buf.c - 三角形が舞い散るデモ mode -X を使用したトリプルバッファリング と retrace interruptのシミュレーション
【ユニコード/フォント】
- exstars.c - 3D宇宙空間と光速宇宙船 by Dave Thomson
- exzbuf.c - Zバッファポリゴンを使ったデモ by Bertrand Coconnier
- exquat.c - 立方体の回転デモ クオータニオンとオイラー角回転のわかりやすい比較。 by Jason Wilkins
- ex3d.c - 3Dで跳ね回る立方体のデモ
- excamera.c - 3D空間内を視点が移動するデモ。キーで操作可能
- exscn3d.c - scene関数を使ったAllegro3Dデモ by Bertrand Coconnier
【その他】
- exfont.c - フォント表示のデモ らしい(うまく動かなかった)
- exunicod.c - ユニコード文字列を扱う関数のデモ by Eric Botcazou(日本語表示や、DATAFILEフォントの読み込みの参考になる)
- exswitch.c - コンソールスイッチモードを制御する。マンデルブロー画像を表示するデモ
- extimer.c - タイマーを使う(遅延と割り込み) 数字をカウントするデモ
- exspline.c - スプライン曲線を使ったスムーズな軌跡移動を構築する
. /exbitmap allegro.pcx
cd allegro-4.2.0/examples/ ディレクトリに入ってから、とコマンドを打つ。
gcc -Wall -o exfonts exfonts.c -I /home/allegro/allegro-unstable/ `allegro-config --libs`
テストプログラム一覧Grabber と fileselctor は、プログラムの文字コードをUTF8 にして、和文フォント読み込み処理を加えれば日本語パスも表示されると思います。
- cpptest - 拡張子 .cpp のファイルをコンパイル 、実行する。( C++ コード の動作テスト)
- playfli - FLIC/FLI 動画ファイルを再生するテスト
- akaitest - サウンド録音に対応しているかのテスト
- digitest - サウンド入力に対応しているかのテスト
- filetest - GUI を利用したファイルセレクタ
- mathtest - GUI を利用した 電卓
- miditest - GUI を利用したMIDI音源のテスト。楽器を選択し、鍵盤をクリックすると音が鳴ります。
- gfxinfo - グラフィックドライバの情報をを表示する
- play - Digi / Midi ドライバに関する情報を表示する。
- vesainfo - Windows と DOS 向けの機能テスト。
- afinfo - Windows と DOS 向けの機能テスト。
test - 様々なテストを行う。テスト内容は以下の通り
グラフィックモード(Solid, Xor,Copy pattern,Solid pattern, Masked pattern,Translucent),
スイッチモード(None,Pause,Amnesia,Background,Backamnesia), リフレッシュレートの取得,
blitting関数描画テスト ( textout,blit,stretch_blit,draw_sprite,draw_trans_sprite,draw_lit_sprite,rotate_sprite )
primitive関数描画テスト( putpixel, hline, vline,rectfill,circle,circlefill,ellipse,ellipsefill,arc,triangle,triangle3d )
Intaractive テスト( getpixel(スポイト), polygon(多角形), polugon3d(ポリゴンテクスチャ やグローシェーディング等) , floodfill(塗りつぶし),spline)
スクリーンのプロファイル, メモリのプロファイル, 3D描画のプロファイル
マウス情報表示,キー入力の表示, タイマー, スクロールに関する情報, 簡易ベンチマーク計測
gcc -Wall -o grabber grabber.c datedit.c plugins/*.c -I /home/allegro/allegro-unstable/ `allegro-config --libs`コンパイルするとき macosx/obj/plugin.h が存在しないというエラーが出るようなら objディレクトリ を tools ディレクトリにコピーしてうまくソースをリンクさせよう。
ウインドウモード, フルスクリーンモード (8bit パレット, 15,16,24,32bit 半透明処理)
z-buffer によるポリゴン3D描画。ビットマップのダブルバッファリング,トリプルバッファリング
Blitting 透過処理 3種類のスプライト(Normal/lit ,RLE, Compiled), 拡大,縮小,反転,回転,透過,半透明
ユニコード 対応(ASCII , UTF8, UTF16), デバッグ・トレース、タイマー, GUI
キーボード, マウス,ジョイスティック による入力 , DATアーカイブ と Packfile 圧縮。
イメージ: bmp , pcx , tga , lbm 形式の読み込みと保存
サウンド: wav , voc , midi 形式の再生と録音
フォント: .fnt (PC bios font) , .grx(xFree86) , Datafile(フォント画像化)
動画関連:fli , flc(Autodesk Animator形式)
コンフィグ:ini (テキストファイルで、解像度やキーコンフィグ等の設定情報を記録できる)
アーカイブ:.dat (Grabber, DAT ツールによって圧縮したDatafile、 またはLZW形式のPackgile )
FLIC routines や load_grx_font などの関数はほとんど使わないかもしれない。
Allegro で指定可能なOSX 固有のグラフィックドライバグラフィックモードやサウンドの初期化について は exhello.c 等の 収録サンプルコードが参考になります。Allegro で指定可能なOSX 固有のサウンドドライバ
- GFX_QUARTZ_FULLSCREEN - フルスクリーン表示
- CoreGraphics(Quartz)DirectDisplay interface による描画
- GFX_QUARTZ_WINDOW - ウインドウ表示
- Cocoa QuickDraw with Quartz 2D( Quartz 2D から QuickDrawを使う )描画。
マウスや、サウンドドライバが動作するには、 MacOS X 10.2.x (Jaguar)以降が必要です。
マルチプラットフォームを意識する場合は以下のものを指定するのが無難です。
- MIDI_CORE_AUDIO - CoreAudio MIDI シンセの使用。Carbon Sound Manager出力 (OSX 10.2 以降)
- MIDI_QUICKTIME - QuickTime 音源を割り当てる
- GFX_TEXT - エラー発生時等
- GFX_AUTODETECT - 画面モードの自動検索
- GFX_AUTODETECT_FULLSCREEN
- GFX_AUTODETECT_WINDOWED
- GFX_SAFE
- MIDI_AUTODETECT - MIDIドライバの自動検索
- MIDI_DIGMID - ウェーブレットプレイヤーを使う。
- MIDI_NONE
システム * Using Allegro:★★★ サンプルコードを見ると大体わかる allegro_init, allegro_message ,END_OF_MAIN,set_window_title 構造体(ストラクチャ) * Structures and types defined by Allegro :★★★★ BITMAP の 幅や高さを得たい時など。 ユニコード * Unicode routines:★★★★ テキスト関連、文字列の検索や連結だとか。 コンフィグ * Configuration routines:システム環境設定や初期設定などを書いた .iniファイルを読み込む ★★ 興味が有れば 出入力 * Mouse routines:★★★★★ * Timer routines:★★★★ * Keyboard routines:★★★★★ * Joystick routines:★★★★ * Graphics modes:★★★ 要点のみおさえる set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0) を押さえておけばOK。 画像関連 * Bitmap objects:★★★★ 必要に応じて create_bitmap, screen,destroy_bitmap,SCREEN_W,SCREEN_H * Loading image files:★★★ 要点のみおさえる load_bitmap の ロード方法さえ押さえておけばOK。 * Palette routines :★★★★ 必要に応じて * Truecolor pixel formats:★★★ 要点のみ makecol は押さえとく、あとは必要に応じて 図形描画 * Drawing primitives:★★★ 要点のみ rectfill , rect , circle., circlefill, polygon, 画像転送&スプライト * Blitting and sprites :★★★★ 必要に応じて * RLE sprites:★★★★ 必要に応じて * Compiled sprites:★★ 興味があれば テキスト * Fonts:★★必要に応じて。 * Text output : 英数字しか対応してないが、 textprintf_ex 等を押さえておけば困らないと思う。 レンダリング * Polygon rendering:★★★★ 必要に応じて * Transparency and patterned drawing:★★★★ 必要に応じて * Converting between color formats:★★ 興味があれば * Direct access to video memory:★★ 興味があれば |
動画 * FLIC routines: ★★興味があれば。 サウンド * Sound init routines :★★★ 要点のみ install_sound(DIGI_AUTODETECT, MIDI_NONE, 0) さえ押さえておけばOK。 * Mixer routines:サウンド関連の情報を取得する。★★ 興味があれば * Digital sample routines : WAVの読み込みは押さえておく。★★★★ 必要に応じて * Music routines (MIDI):★★★★ 必要に応じて * Audio stream routines:★★ 興味があれば * Recording routines:★★ 興味があれば ファイル * File and compression routines: 圧縮ファイルや ファイルにパスワードをかける。★★ 興味があれば * Datafile routines: 音楽や画像データをひとつのファイル(.dat)にまとめる。(Grabber関連) 数学関連 * Fixed point math routines:★★ 興味があれば * 3D math routines:行列変換など ★★ 興味があれば * Quaternion math routines:四元数による 3D回転に関する変換 ★★ 興味があれば GUI * GUI routines :ラジオボタンや チェックボックス、 セレクトメニュー、コンテキストメニューなど ★★ 興味があれば デバッグ *Debugging:ASSERT や TRACE といった関数が用意されている。 ★★★★ 必要に応じて その他 *Available Allegro examples :収録されている サンプルについての紹介。 *Makefile targets:Makefile のターゲットについて *Help: what to do when your Allegro program doesn't work: エラーに悩まされた時のヘルプ *Changes since previous versions:バージョンアップ履歴 *API compatibility information:Allegro の バージョンの互換性について * Packfile format information:Packfileの仕様 *Datafile format information: Datafile仕様 *License and Disclaimer:ライセンスとか DAT アーカイブファイルの扱い *grabber - Create datafiles(Datafile routinesと関連) ★★★★ 必要に応じて *dat - Manipulate datafiles from the commandline :★★★★ 必要に応じて |
同じディレクトリに実行ファイルと、画像ファイルがあって、上のような配置で、バンドルアプリケーションの外にあるファイルを読み込むのに
MY_APPLICATION.app
picture.bmp
myimage = load_bitmap( "picture.bmp" , NULL );このように書いても何故かファイルが読み込めなかったりします。この現象は、Allegroの OSX ユーザーの間でも問題になっています。
Allegro はバンドル内の bundle.App/Contents/Resources/executable/ というパスを読み込むことができるので、そこに画像ファイルを登録しておけば、 そのファイルを読み込むことができます。ここで重要なことは、executable は、プロジェクト名と同じ名前でなければいけないということです。Bundles created by fixbundle have this default layout: bundle.app --- Contents --+--- MacOS --- executable | +--- Resources --+--- (bundle.icns) | | | +--- (executable/...) ここに読み込むファイルを置く。 | | +--- (Frameworks) --- (Allegro.framework/...) | +--- Info.plist | +--- PkgInfo
myimage = load_bitmap( "sample.bmp" , NULL );と書けばアプリケーションバンドル内の sample.bmp を読み込みます。
○ OS やコンパイラ環境に応じて.
ALLEGRO_DOS
ALLEGRO_DJGPP
ALLEGRO_WATCOM
ALLEGRO_WINDOWS
ALLEGRO_MSVC
ALLEGRO_MINGW32
ALLEGRO_BCC32
ALLEGRO_UNIX
ALLEGRO_LINUX
ALLEGRO_BEOS
ALLEGRO_QNX
ALLEGRO_DARWIN
ALLEGRO_MACOSX
ALLEGRO_GCC
○ CPU の特徴に応じて
ALLEGRO_AMD64
ALLEGRO_I386
ALLEGRO_BIG_ENDIAN
ALLEGRO_LITTLE_ENDIAN
○ 環境が対応している機能に応じて
ALLEGRO_MULTITHREADED
ALLEGRO_USE_CONSTRUCTOR
ALLEGRO_NO_STD_HEADER
ALLEGRO_NO_KEY_DEFINES
ALLEGRO_NO_FIX_ALIASES
ALLEGRO_NO_FIX_CLASS
ALLEGRO_NO_CLEAR_BITMAP_ALIAS
ALLEGRO_NO_COMPATIBILITY
INLINE
RET_VOLATILE
ZERO_SIZE_ARRAY(type, name)
AL_CONST
#include <sys/types.h>
#include <sys/stat.h>
Windows
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
↓
OSX
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
char name[200];
get_executable_name(name, sizeof(name));
//例えば、 user/desktop/tetris/program.app が name に代入されます。
allegro_message("Running `%s'\n", name);
// ファイル読込み( MapLoad と TextLoad 関数はユーザが用意した関数で、
// C標準ライブラリの fopen 関数を使ってテキストファイルを読み込むというものです。
// 関数を fp= fopen( name , "r" ); というように使っています。 )
// ファイル名を差し替える
replace_filename(name, name,"map.txt", sizeof(name));
MapLoad(name);// name に格納されている絶対パス名 user/desktop/tetris/map.txt で読み込みます
replace_filename(name, name,"story.txt", sizeof(name));
TextLoad(name);// name に格納されている絶対パス名 user/desktop/tetris/story.txt で読み込みます。