GLUT互換モード†
FLTKはGLUT互換のためのヘッダが用意されている
(GLUT 3.7 および freeglut 2.4.0と互換性を持つ).
これを使うとGLUTを使ったOpenGLアプリケーションを最小限の変更でFLTKに移行できる.
つまり,
#include <GL/glut.h>
の代わりに
#include <FL/glut.h>
を使うだけである.
だだし,fltk.lib,fltkgl.libをリンクすること.
互換モードではGLUTをそのまま使えるだけでなく,
モーダルダイアログの生成で例を示したようなFLTKダイアログウィンドウなども使える.
注意点†
- GLUTシンボルの値 : GLUTのシンボルでその値が同じなのは
GLUT_DOWN GLUT_UP GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON GLUT_KEY_F1-GLUT_KEY_F12
だけである.たとえば,修飾キーGLUT_ACTIVE_SHIFTやGLUT_ACTIVE_CTRLはGLUTではそれぞれ1,2だが,
FLTKではFL_SHIFT,FL_CTRLと同じ値になっている.単純にif文で値を比べて処理を分けている場合はよいが,数値を直接使って処理をしている場合は注意が必要である.
- glutSwapBuffers関数は呼び出しても何もしない.FLTKは標準でダブルバッファの切り替えを行っているので必要ない.
- いくつかの未実装のものもあるので注意.詳しくは,FLTKのマニュアルのGLUT Compatibility参照.
- glutAddMenuEntryの第一引数がconst char*からchar*になっているので,std::stringのc_str()関数を使ってメニュー名を設定している場合は,
char ch[256];
sprintf(ch, "%s", str.c_str());
glutAddMenuEntry(ch, 0);
のように変更する必要がある.