*FLTK+OpenGLのアプリケーション例 [#tba25daa] [[3Dモデルファイルの入出力]]のコードを利用して, 3Dモデルファイルを読み込んで表示するアプリケーションを作成した. メニューから3Dモデルファイルを読み込んで,OpenGLを使って描画する. 機能としては, -OBJ,DXF,VRL,3DS,STLファイルの読み込み -OBJ,DXF,STLファイルでの出力 -Windowsネイティブのファイルダイアログ -マウスでの回転(左ドラッグ),平行移動(Shift+左ドラッグ),ズーム(Ctrl+左ドラッグ) -Fl_Rollerによる回転(v1.1) -画面の画像保存(PNG,BMP) FLTKでOpenGLを扱う方法については以下のページ参照 -[[Fl_Gl_Windowの派生クラスによるOpenGL描画]] -[[Fl_Gl_Windowでのキーボード・マウス入力]] -[[Fl_Gl_Windowでのアニメーション]] ***実行画面 [#j39412f6] #ref(fltk_opengl.jpg,,50%); ***ダウンロード [#q0ca844d] 実行ファイル.動作確認はWindows 7 x64(アプリケーション自体は32bit) #ref(fltk_opengl_bin_v1.zip) #ref(fltk_opengl_bin_v1.1.zip) Visual Studio 2010の環境で作成したコードは以下. #ref(fltk_opengl_v1.zip) #ref(fltk_opengl_v1.1.zip) ***ビルドするのに必要なライブラリ [#sa27b394] fltk, freeglut, boost, libpng, zlib, libjpeg 各ライブラリについては[[ライブラリのインストール]]を参照. また,[[3Dモデルファイルの入出力]]にあるrx_model.libが必要. -簡単な説明&注意事項 --rx_fltk_opengl.cppがエントリ関数が書かれたファイルである. --Fl_Gl_Windowの派生クラスrxFlGLWindowをウィジットとして,Fl_Double_Window上にセットしている.rxFlGLWindowクラスの宣言と実装はrx_fltk_glcanvas.hとrx_fltk_glcanvas.cpp,Fl_Double_Windowの派生クラスであり,ウィンドウ上の他のウィジット(メニューやボタン,ステータスバーなど)を記述するrxFlWindowクラスはrx_fltk_window.hとrx_fltk_window.cppに宣言,実装されている.rx_fltk_widgets.hには共通の関数やカスタムウィジットなどを記述している. --終了時にウィンドウ位置・サイズや視点の状態を設定ファイル(rx_fltk_opengl.ini)に保存する.設定ファイルへの入出力はshared/inc/rx_atom_ini.hで行っている. --Windows環境ではFLTKデフォルトのファイルダイアログでなく,OSネイティブのファイルダイアログを使うようにしている(FLTK標準のファイルダイアログがどうも使いづらかったため.rx_fltk_widgets.hのShowFileDialog関数参照). --デフォルトではプロジェクトフォルダにある"bunny.wrl"を読み込んで描画する. -更新履歴 --v1.1 : ---マウス座標がおかしかったのを修正 ---Fl_Rollerによる回転を追加 ---回転に慣性を加えるチェックボックスを追加