首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Netwire网络连接到OpenGL/GLUT回调

将Netwire网络连接到OpenGL/GLUT回调
EN

Stack Overflow用户
提问于 2012-11-17 09:53:54
回答 2查看 399关注 0票数 0

作为实验,我设置了一组连接到电机上的模拟齿轮,并使用OpenGL/GLUT渲染它们。目前,有线网络的唯一输入是Time。我想用键盘来控制电机的变速。我还想将物理时间步长从Fix your Timestep!中描述的帧速率中分离出来。

这意味着我需要使用三种不同类型的输入从三个不同的GLUT回调函数(keyboardMouseCallbackidleCallbackdisplayCallback)运行Wire网络。我不清楚如何将Netwire与GLUT回调集成在一起。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-17 12:01:03

GLUT对需要控制主循环的框架有点敌意,比如Netwire。这是可能的,但您可能必须使用IORef或类似的东西。据我所知,对Netwire最友好的OpenGL管理器是SDL,当然您也可以尝试一下Nicol的GLFW建议。否则,您将不得不单步执行多个事件处理程序。

为了处理实际的键盘输入,我建议您将事件信息添加到您正在使用的任何底层monad中(阅读器monad可能是最好的解决方案)。然后,实现一个keyDown连接,每当按住给定的键时都会生成:

代码语言:javascript
复制
keyDown :: (Monoid e) => Key -> Wire e (Reader GuiState) a a

现在你可以做一些像这样简单的事情:

代码语言:javascript
复制
position = integral_ 0 . speed
    where
    direction key dir = dir . keyDown key <|> 0
    speed = direction Right 1 + direction Left (-1)
票数 3
EN

Stack Overflow用户

发布于 2012-11-17 10:01:17

你有没有想过...不这样做吗?

没有法律规定你必须使用(免费的)供过于求。GLFW (几乎)一样有能力,它允许你随心所欲地控制渲染循环。它是一个基于轮询的API,所以任何回调都只会在你想要的时候发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13426888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档