Bulletにもどる | link_pdfプラグインはご利用いただけなくなりました。 |
Bulletのデモプログラムに使われてるあれ
Bulletのデモアプリケーションに使われているライブラリDemoApplication(OpenGLとかいうのに入ってる)のメモ
- ExtrasとDemos/OpenGLを同梱しないとコンパイルできないのものがあるので注意
- MacOSXでFramework形式でインストールした人は、「#include "btBulletDynamicsCommon.h"」を「#include <BulletDynamics/btBulletDynamicsCommon.h>」にする必要がある。(めんどい)
動き方
いろいろコールバックを指定しているけど、再帰呼び出しや無限ループで動くコールバックはない。
よって1ループごとにIdleFuncが呼び出されることになり、実質的なメインループになっている。
よって1ループごとにIdleFuncが呼び出されることになり、実質的なメインループになっている。
通常のGLUTプログラムではDisplayFuncがメインループなことが多いが、Buletのデモデは違うので注意!
初期化
gDemoApplication->myinit();
アイドルコールバック(大事!)
GLUTで他に処理するイベントがないときに呼び出されるコールバック関数を登録する
実質メインループになってる。
実質メインループになってる。
glutIdleFunc(glutMoveAndDisplayCallback);
- DemoApplication::moveAndDisplay
- 通常時:DemoApplicationを継承したプログラムのclientMoveAndDisplay
- 一時停止時:DemoApplicationを継承したプログラムのdisplayCallback
キーボードコールバック
キーボードが押された時のコールバック
glutKeyboardFunc(glutKeyboardCallback);
glutKeyboardFunc(glutKeyboardCallback);
- DemoApplication->keyboardCallback(key,x,y);
- DemoApplicationのkeyboardCallback:デフォルトのキーバインドを指定している
- 各プログラムのkeyboardCallback:オプションのキーバインドを指定し、defaultでDemoApplicationのkeyboardCallbackを呼んでいる
マウスコールバック
マウスがクリックされたときに呼ばれるコールバック
glutMouseFunc(glutMouseFuncCallback);
glutMouseFunc(glutMouseFuncCallback);
- DemoApplication::mouseFunc
ドラッグコールバック
マウスをドラックしたときに呼び出されるコールバック
glutMotionFunc(glutMotionFuncCallback);
glutMotionFunc(glutMotionFuncCallback);
再描画コールバック
ウィンドウサイズが変更されたときに呼ばれる。
glutReshapeFunc(glutReshapeCallback);
glutReshapeFunc(glutReshapeCallback);
- DemoApplication::reshape
視点やカメラの位置を修正しているらしい。
キーボードアップコールバック
キーボードからキーが離された時に呼び出すコールバック関数
glutKeyboardUpFunc(glutKeyboardUpCallback);
glutKeyboardUpFunc(glutKeyboardUpCallback);
- DemoApplication::keyboardUpCallback
特殊キーコールバック
キーボードから特殊キーを押した時に呼び出すコールバック
glutSpecialFunc(glutSpecialKeyboardCallback);
glutSpecialFunc(glutSpecialKeyboardCallback);
- DemoApplication::specialKeyboard
特殊キーアップコールバック
キーボードから特殊キーを離した時に呼び出すコールバック
glutSpecialUpFunc(glutSpecialKeyboardUpCallback)
glutSpecialUpFunc(glutSpecialKeyboardUpCallback)
- DemoApplication::specialKeyboardUp
実態はDemoApplication.hにあるが、なんにもしてない。
ディスプレイコールバック
再描画処理が必要なときに呼び出される。
glutDisplayCallback
glutDisplayCallback
- DemoApplication::displayCallback(なんもしない)
結局何もしていない
処理の開始(glutの関数ではない)
glutMoveAndDisplayCallback();
- DemoApplicationのmoveAndDisplay
上記参照