2012-03-24 76 views
0

我有一个使用油嘴油腔滑调主循环的程序。同时,它采用openGL的绘制一些事情,需要处理来自键盘输入如何结合循环或如何实现许多循环到glib主循环?

问题瑟,我用来做一切从海誓山盟分开,不是在一个程序相结合。由于Glib具有主循环,并且openGL使用循环进行渲染(有一些睡眠)。有了这些,我需要一个循环来监听关键事件。

是什么使这一切工作的togeather的最佳方式?我应该在线程中创建三个循环还是实现其他循环来润滑主循环以及如何实现?

+0

也许你可以使用GLib的主循环来安排你的渲染活动,即使渲染需要定期发生(例如,每1/15秒)。 GLib未检测到的事件可以转化为GLib事件。通过将X键盘事件转换为GLib事件,我发现了一些将X集成到GLib循环中的代码。 – 2013-11-01 17:16:59

回答

0

我不知道油嘴本身,但我怀疑你想要做的是有一个事件循环可以切换,并移交给由相应的子系统进行处理的事件。然后返回到主循环。

1

我不知道如果这是你在找什么,但我已经使用了GTK +的OpenGL扩展名为gtkglext http://projects.gnome.org/gtkglext/

GTK +项目也依靠油腔滑调,所以没有变更。使用GTK +主循环和gtkglext的优势在于您可以将常规按钮/小部件或自定义2D/3D小部件与OpenGL窗口混合使用。

+0

我对此很难过,但我认为使用GTK +会超重,因为我真的不需要任何按钮或GKT +主要用于的任何东西。顺便说一下,如果我使用这种重量级的库,但如果我只使用部分,我的程序仍然会很慢?如果不是,那可能是简单的解决方案。 – 10robinho 2012-03-24 05:02:29

+0

我检查了[this](http://stackoverflow.com/questions/2247465/does-using-large-libraries-inherently-make-slower-code)并决定尝试一下你的建议。 – 10robinho 2012-03-24 05:17:33