我正在构建跨平台游戏引擎,现在我专注于输入系统。
我编写了一个抽象的输入系统,它向上传递消息并由平台相关模块提供,在单独的线程中运行。
在 Windows 中,我创建了“仅消息”窗口,该窗口向输入系统提供来自 RAWINPUT 的消息(转换为与平台无关)。
现在我很难弄清楚如何在基于 unix 的系统上做类似的事情。有什么方便的方法可以从内核获取输入(keyup、keydown、mousemove ...)?或者任何其他不需要显示任何窗口的方式?
编辑
我不希望我的输入系统依赖于我的渲染器。当应用程序焦点发生变化时,渲染器应该只通知输入......所以我希望输入系统在与渲染器不同的线程上运行。