我在我的几个程序中使用了glutdisplayFun(void(* func))将回调显示设置为当前窗口。通过使用它,我在屏幕上呈现了不同的东西。通过查看过剩的文档,将null传递给它是非法的,我们也不能注销它。
问题在于,我们无法取消注册,我会编写一组代码来显示主菜单(如游戏中所示)。我想转到按键上的下一个窗口(即通过点击主菜单中的选项播放来玩游戏)。
如何使glutdisplayfunc对mainmenu的调用处于非活动状态,并设置glutdisplayfunc()以调用下一个窗口。
答案 0 :(得分:0)
std::%something%<std::function<void(void)>> displayFns;
void myDisplayFunc() {
for (auto& displayFn : displayFns)
displayFn();
}
现在向GLUT注册myDisplayFunc
并更改displayFns
集合。
至于某些事情,map<int, function<...>>
将是一个良好的开端。无序地图,如果您可以保证您的代码不需要按顺序调用。它开始类似于旧的BASIC时代的行号,但我提前说它将是一个简单的答案。
这不是我会怎么做的,但是应该做一个快速'解决方案的诀窍。
有趣的是,你可以创建一组这些,让一个元素很容易出现在多个选项中。所以也许它毕竟不是那么糟糕。