glutdisplayFunc()的实现

时间:2014-01-27 14:47:20

标签: opengl

我在我的几个程序中使用了glutdisplayFun(void(* func))将回调显示设置为当前窗口。通过使用它,我在屏幕上呈现了不同的东西。通过查看过剩的文档,将null传递给它是非法的,我们也不能注销它。

问题在于,我们无法取消注册,我会编写一组代码来显示主菜单(如游戏中所示)。我想转到按键上的下一个窗口(即通过点击主菜单中的选项播放来玩游戏)。

如何使glutdisplayfunc对mainmenu的调用处于非活动状态,并设置glutdisplayfunc()以调用下一个窗口。

1 个答案:

答案 0 :(得分:0)

std::%something%<std::function<void(void)>> displayFns;

void myDisplayFunc() {
    for (auto& displayFn : displayFns)
        displayFn();
}

现在向GLUT注册myDisplayFunc并更改displayFns集合。

至于某些事情,map<int, function<...>>将是一个良好的开端。无序地图,如果您可以保证您的代码不需要按顺序调用。它开始类似于旧的BASIC时代的行号,但我提前说它将是一个简单的答案。


这不是我会怎么做的,但是应该做一个快速'解决方案的诀窍。

有趣的是,你可以创建一组这些,让一个元素很容易出现在多个选项中。所以也许它毕竟不是那么糟糕。