我正在尝试为 sfml 窗口创建一个窗口容器。如果您不熟悉 sfml,则 sfml 窗口是一个不可复制的类,因此例如不能放在 std::vector 中。
我已经完成了大部分工作,但我现在正在尝试实现某种回调函数,该函数将在调用 window.Display() 以更新窗口之前完成 open-gl 绘图工作。
我无法理解回调函数的语法(c 或 c++ 版本)。有人愿意向我解释一个例子吗?
更好的是,有人愿意解释如何在类中实现回调函数的示例,以便可以将函数(用户定义的)传递给类的函数,该函数将记住该函数是什么所以它以后可以被类调用。
为了使上面的句子更清楚:我认为我需要三件事:
1):用户定义的函数,例如:
void doDrawing(){
// do some open gl stuff
}
2 :) 类中的一个函数,它接受上述用户定义函数的参数:
void setDisplayFunc( ?argument of a function? argument ){
function_pointer pointer = argument;
}
我不知道'argument'应该是什么类型,或者'function_pointer'必须是什么......我认为这是我最卡住的地方!
3:) 类可以调用上面分配的函数的一种方式。
// Do the function which is pointed at by pointer, which is of the type 'function_pointer' ... Whatever function_pointer happens to be!
如果有人以前使用过 glut,那么我想我正在尝试实现 glut 回调函数,如下所示:
void someDisplayFunction(){
// do open gl stuff
}
glutDisplayFunc( someDisplayFunction );
上面的函数接受用户定义函数的参数,然后在我们调用 'glutPostRedisplay' 时执行它......
我希望这是有道理的,我已尝试提供尽可能多的信息来提供帮助。任何帮助表示赞赏。(: