C言語文脈 |
Allegro文脈 |
AllegroGL 文脈 | OpenGL文脈 |
---|---|---|---|
(任意) #include< stdio.h> | |||
Allegro ヘッダファイル読込み #include <allegro.h> |
|||
AllegroGL ヘッダファイル読込み #include "alleggl.h" |
|||
OpenGL ヘッダファイル読込み 他OSでもコンパイル可能にするなら #ifdef ALLEGRO_MACOSX #include <OpenGL/glu.h> #else #include <GL/glu.h> #endif |
|||
Allegroで使う変数の用意(任意) volatile int secs; | AllegroGLで使う変数の用意(任意) | OpenGLで使う変数の用意(任意) |
struct void fps_timer(void){ FPSを計算する場合のカウント(任意) |
|||
secs++; | |||
}END_OF_FUNCTION(fps_timer); |
struct OpenGL_matrix_and_so_on_etc{ OpenGL で 使用するデータなどを準備の例 主に 他の描画処理関数で使われる。 |
|||
エフェクトや,回転用のmatrixデータ,スプライト動作処理、3Dオブジェクトの頂点座標データなど |
|||
} |
void draw_GL(void){ OpenGL の 描画処理の例 AllegroGLのサンプルでは main()関数のwhileループ内で呼び出される。 他の描画処理関数 からも呼び出される。 | |||
カラー設定 glClear , glColor4f glBegin( setting ); glBegin と glEnd の間に OpenGLの描画処理を書く glRotatef ,glPushMatrix(); など。 glEnd(); フレームバッファに反映 glFlush(); |
|||
} |
void init_GL(void){ OpenGL の 初期化処理の例 AllegroGL サンプルプログラムでは main()関数内に書かれているが、ここでは分けてみた。 |
|||
シェーディング、ポリゴン、カメラ視点などの初期状態をセット。 glEnable( setting ); glShadeModel( setting ); glPolygonMode( setting ); glLoadIdentity(); /*カメラの視点 */ gluLookAt( setting ); glBegin( setting ); 〜〜〜 glEnd(); |
|||
} |
int main(){ メイン処理 | ||||
Allegroで使う変数を用意。 BITMAP *texture,*sprite; DATAFILE *datafile; |
AllegroGLで使う変数を用意 | OpenGLで使う変数を用意。 GLuint *value; | ||
Unicodeを使用する場合(任意) set_uformat(int type); Allegro を有効にする前にセットする | ||||
Allegroを有効にする。 allegro_init(); | ||||
AllegroGLを有効にする。install_allegro_gl(); | ||||
キーボード入力,マウス入力等を有効にする。 install_keyboard(); install_mouse(); install_timer(); |
||||
タイマー処理(任意) LOCK_FUNCTION(fps_timer); LOCK_VARIABLE(secs); install_int (fps_timer, 1000); |
||||
AllegroGL の初期状態をセットする。 allegro_gl_clear_settings(); allegro_gl_set( setting , value ); allegro_gl_set( priority , setting | ....); allegro_gl_set(AGL_WINDOWED, TRUE); | ||||
スクリーンの画面モードをセット、有効にする。 set_color_depth (32); set_gfx_mode(GFX_OPENGL, WINDOW_W, WINDOW_H, 0, 0) | ||||
ソースの読み込み(ビットマップ画像,テクスチャ画像,サウンド,DATAFILE)(任意) bitmap = load_bitmap("image.bmp", NULL); data = load_datafile("datafile.dat"); | ||||
テクスチャ画像のセット(任意) 処Allegroによって、読み込んだビットマップデータをテクスチャにセット。 allegro_gl_use_mipmapping(TRUE); allegro_gl_make_texture( texture ); |
||||
( allegro_gl_begin(); (不必要) ) | ||||
AllegroGLから、OpenGL拡張機能をロード(任意) allegro_gl_extensions_GL | ||||
OpenGLの初期状態をセットする AllegroGL サンプルプログラムでは main()関数内(ここ)に書かれている。 init_GL(); | ||||
制御ループ(例)( ESCキーが押されるまで処理を繰り返す:whileループを抜ける条件は任意) また、ループ内の各処理の順序は自由です。 while (!key[KEY_ESC]) { | ||||
OpenGLによる描画(任意) draw_GL(); 処理によって、任意に呼び出せる。 | ||||
glEnable(setting ); glLoadIdentity(); glBegin( setting ); 〜〜〜 glEnd(); | ||||
画面を更新する(任意) allegro_gl_flip(); 実際の表示画面が切り替えられる。OpenGLや、Allegroグラフィックによる描画がここで画面上に反映される。 | ||||
キーボード入力/マウス入力/イベント処理(任意) poll_mouse(); マウスの状態を監視 keypressed(); キーが押されたか? readkey(); キーバッファ読み取り if( !key[KEY_A] ){ 処理 } |
||||
} | ||||
Allegroで使ったデータの破棄 メモリを開放する | AllegroGLで使ったデータの破棄 メモリを開放する | OpenGLで使ったデータの破棄 メモリを開放する | ||
return 0; | ||||
} | ||||
Allegro終了マクロ AllegroGL, OpenGL の終了 END_OF_MAIN(); |