Hokay所以我正在努力实现这一目标:
我将通过网络发送一些网格数据,我的渲染器(在XNA中编程)必须渲染。对于那些不熟悉的人来说,典型的XNA“游戏”基本上是在一个连续的线程中运行...它可以更新和绘制你的数据。问题是,我不想通过对网络数据进行反序列化来减慢此线程的速度(这会降低我的帧速率)。因此,我认为我需要一个侦听网络连接的线程,将数据包反序列化为游戏可以使用的内容,然后提醒XNA线程数据已准备好呈现。这样,如果网络上存在延迟或其他情况,我的渲染与网络数据同步。
现在,我熟悉基本的线程原理,但是我想知道是否有人之前已经这样做了,我能做些什么来设计/实现这个东西?我需要保持线程分离(也就是说,XNA线程无法开始执行侦听线程代码,反之亦然)。我认为这本质上是一个生产者消费者问题,但是如果有人能给我一些.NET / XNA代码(或伪代码),它概述了我需要的同步,我将非常感激。
随意请求澄清......我会尝试根据需要进行编辑。
答案 0 :(得分:1)
XNA中的draw方法作为一个独立运行的单独线程运行。所以基本上它应该只是将新网格写入绘制的对象中,绘制将在下一次渲染时呈现,否则如果新数据尚未可用,它将仅渲染旧网格。
这消除了与实际渲染同步的需要,因为它可能比你更新这些变量的渲染速度更快。