![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
このページは内容が古くなっています(ただ今改訂の準備中です)
#include <Framework/SprFWAppGLUT.h> class MYApp : public FWAppGLUT{ private: MYApp(); ~MYApp(); // 必要に応じて以下の仮想関数をオーバーライドする. // これらは,SprFWApp.hで仮想関数として定義されている. void Display(); void Reshape(int w, int h); void Keyboard(int key, int x, int y); void MouseButton(int button, int state, int x, int y); void MouseMove(int x, int y); void Step(); void Idle(); void Joystick(unsinged int buttonMask, int x, int y, int z); public: // インスタンス生成関数 static MYApp* GetInstance(){ // instance is a static variable declared in class FWAppGLUT. if(!instance) instance = new MYApp(); return (MYApp*)instance; } void Init(int argc, char* argv[]); void Start(); public: // 自分で作ったメンバ関数を追加 private: // 自分で作ったメンバ関数やメンバ変数を追加 };
#include "MYApp.h" void MYApp::Display() { //描画処理,オーバーライドしなければシーングラフが描画される } void MYApp::Reshape(int w, int h){ //画面サイズが変更された時の処理,オーバーライドしなければ規定のReshape関数が呼ばれる } void MYApp::Keyboard(int key, int x, int y){ //キーボードのキーが押された時の処理,オーバーライドしなければ何も処理はされない. } void MYApp::MouseButton(int button, int state, int x, int y){ //マウスが押されたときの処理,オーバーライドしなければ規定のMouseButton関数が呼ばれる. } void MYApp::MouseMove(int x, int y){ //マウスを動かしたときの処理,オーバーライドしなければ規定のMouseMove関数が呼ばれる } void MYApp::Step(){ //シミュレーションのステップ処理,オーバーライドしなければ一定周期ごとに規定のStep関数が呼ばれ,シミュレーション時間が進む //GLUTでいうところのglutTimerFuncへ登録する関数と同じ役目 } void MYApp::Idle(){ //シミュレーションのアイドル処理,オーバーライドしなければ何も呼ばれない } void MYApp::Joystick(unsinged int buttonMask, int x, int y, int z){ //ゲームコントローラの入力を処理,オーバーライドしなければ何も呼ばれない }
#include <Springhead.h> #include "MYApp.h" // Global空間で変数を定義しないと,デストラクタが呼ばれない. // なぜなら,glutから抜ける時にexit関数を使用するほか無いため. // (main関数が正常に最後まで走らない.) // またコンストラクタをpublicにして実体を生成すると, // 複数個のMYApp型の変数が定義出来てしまう可能性があり危険. MYApp* app = MYApp::GetInstance(); int main(int argc, char* argv[]){ app->Init(argc, argv); app->Start(); return 0; // ここまで来ないから,ローカル宣言だとデストラクタが呼ばれない. }