私は自分で C++ Glut エンジンを書いているこの問題に遭遇しました。これが私がそれを回避した方法です:
これらを私のprogram.cpp / main.cppの一番上に置きました
// Function prototypes
void doRendering( void );
void processMouse( int, int ) ;
void processMouseClick(int button, int state, int x, int y);
void keyboardInput(unsigned char c, int x, int y);
これらの関数を glut のコールバックに割り当てます。
glutDisplayFunc(doRendering);
glutIdleFunc(doRendering);
glutPassiveMotionFunc(processMouse);
glutMotionFunc(processMouse);
glutMouseFunc(processMouseClick);
glutKeyboardFunc(keyboardInput);
これらを独自に処理する独自のクラスを作成し、静的関数の内容がこのクラスのインスタンスでメソッドを呼び出すだけになるようにします。メイン関数は、メインにクラスの新しいインスタンスを作成する必要があります (私の場合は... App *newApp)。
void doRendering( void )
{
newApp->updateScene();
newApp->drawScene();
}
void processMouse(int x, int y)
{
newApp->processMouse(x, y);
}
void processMouseClick(int button, int state, int x, int y)
{
newApp->processMouseClick(button, state, x, y);
}
void keyboardInput(unsigned char c, int x, int y)
{
newApp->keyboardInput(c, x, y);
}
それがそれを説明することを願っています。