我自己编写 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);
创建我自己的类,它自己处理这些,然后使我们的静态函数的内容简单地调用此类实例上的方法。您的 main 函数应该在 main 中创建该类的一个新实例(在我的情况下... 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);
}
希望能解释一下。