我正在构建一个显示墙演示应用程序。
环境:
每个节点都运行演示可执行文件的相同副本。每个节点还有一些配置数据,其中包含整个墙的分辨率以及该节点在该空间内的显示的相对位置。渲染时,在投影矩阵之后应用缩放/平移变换(有效地放大节点负责渲染的视图部分。
节点在启动脚本中设置了“模式”开关,将它们置于“发送”或“接收”模式。除一个节点外的所有节点都在“接收”中。 (将节点切换为“发送”会导致所有其他节点切换到“接收”)。
演示应用程序是基本的FPS类型飞行的一些原始几何(网格,二十面体等)。在每次更新时,发送方节点广播包含一些状态信息的UDP数据报(摄像机平移/旋转,移动对象的变换)。
监听器异步接收这些数据报,反序列化状态并更新其本地副本。
净效应是我在我的笔记本电脑上运行应用程序并飞来飞去,墙很顺利。一切都很好。
然而,我担心随着系统的扩展(从10个显示器到500个),网络延迟将成为一个问题。我也认为,不是通过这种方式在网络上发送垃圾信息,将它填入数据库并让每个节点从那里拉出来都会很好,但我怀疑任何现成的数据库是否会受到影响。 60FPS * 500节点循环。
连连呢?真正,非常快速地在很多节点之间共享状态的最佳方法是什么?