glutKeyboardfunc()回调函数参数

时间:2013-10-05 23:40:46

标签: c++ opengl callback

在一个简单的opengl程序中,我有以下这一行:

glutKeyboardFunc(keypressed);

问题是我的“keypressed”功能是在另一个cpp文件中包含到项目中。如何从我的其他文件中调用此函数?

在main.cpp中:

main()
{
  ---
  glutKeyboardFunc(keypressed);
  ---
}
在Motion.cpp中

void keypressed(unsigned char key, int x, int y){...}

我尝试的东西(All给出了编译错误):

glutKeyboardFunc(keypressed);
glutKeyboardFunc(Motion::keypressed);   
glutKeyboardFunc(&Motion::keypressed);
glutKeyboardFunc(&keypressed);  

Motion mot;
glutKeyboardFunc(mot.keypressed);

有什么建议吗? (如果库对于答案很重要,我使用了freeglut.dll)

1 个答案:

答案 0 :(得分:1)

您需要在主C ++文件读取的位置包含一个函数原型。一种方法是将其置于main函数之上:

void keypressed(unsigned char key, int x, int y);

执行此操作的常用方法是让每个导出函数的C ++文件都有一个标题文件,其中包含所有这些函数的原型。然后,当您想要使用该文件中定义的函数时,可以将该头文件包含在需要使用该函数的文件的顶部。