我正在寻找一个库来在 GLFW 和 OpenGL 之上编写一个 GUI。我这样做是因为我对常见的 UI 库绑定感到不满意,我觉得这些绑定过于必要,而且我还希望严格控制我的 UI 的外观和感觉。我想要一种定义 UI 的声明性方法。我正在试验反应香蕉(和暂时反应香蕉wx),看看它是否满足我的需求。我在定义递归小部件时遇到问题。这是我最简单的测试用例:
- 显示计数器的文本小部件。
- 增加计数器的按钮小部件。
- 当计数器为 0 时处于非活动状态(因此它变灰并且根本不响应输入)的按钮小部件,否则处于活动状态并将计数器重置为 0。
第一个和第三个小部件具有递归关系。第一个小部件直观地是从两个按钮提供的事件之一stepper
。union
但是,重置按钮是fmap
计数器的一个,然后事件流依赖于重置按钮!什么是要做?
除了这个问题之外,我还担心事件处理:由于我想在我的代码中处理设备输入和输入焦点,而不是依赖于框架,因此我看到以可扩展方式正确调度事件的困难。理想情况下,我会定义一个data
封装小部件的层次结构的方法,一种在元素之间安装事件回调的方法,然后编写一个遍历该数据结构的函数,以定义设备输入处理和图形输出。我不确定如何获取事件流并将其拆分,因为可以合并事件流。