Allegro,AllegroGL, OpenGL のタイムライン| 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(); | ||||