2010-03-09 69 views
1

我有一个XNA应用程序,我需要将输入队列重定向到自定义线程,而不是仅在主线程中可用。有没有替代AttachThreadInput?从辅助线程读取输入

+0

您在寻找哪些输入设备和平台的信息?键盘/鼠标和Windows或游戏手柄和Xbox 360? – Venesectrix 2010-03-09 17:01:47

+0

键盘在Windows上,它是唯一一个导致问题的... – 2010-03-09 21:37:20

回答

1

我在这方面做了一些探索,我认为你不会找到解决这个问题的好方法。这个post表明,如果你“创建一个新的输入类,在我的游戏主线程中注册这些事件,然后启动线程开始轮询,这可能是可能的。”从这两个线程(包括你在XNA论坛上开始的那个线程)的普遍共识向我表明,尝试将键盘输入发送到不同的线程可能不是最好的想法,并且如果可能的话,主线程应该只处理键盘输入,另一个线程可以读取来自主线程共享存储器的输入。另一种方法是主线程根据收到的输入信息告诉辅助线程执行某些功能。

Keyboard access from other thread
Keyboard Input on Another Thread

+0

其中一个线程实际上是我的(giuseppemag),我希望更广泛的观众可能会添加一些东西:) – 2010-03-11 11:38:35

0

我不太清楚你问什么,但我会尽力回答。

如果你想创建一个多玩家游戏,并希望输入每个玩家由一个线程来处理,你必须做到以下几点:

  • 创建与键盘的XNA对象/在你的应用程序

  • 的主要 执行线程鼠标/游戏手柄通过引用传递对象到自定义的输入处理线程。与它们产卵的过程,所以从您的自定义线程内的对象所做的任何更改

线程共享内存将通过您引用的对象是线外的自动访问。

希望这会有所帮助。

+0

不是这样,我只是建设一个游戏,其中更新和渲染实际上是单独的循环:更新是在另一个线程中完成的,而绘制仍然在主线程中。 我需要读取更新线程内的输入,以比较与更新循环迭代有关的读数。同步主线程的输入读取会增加很多开销,以至于完全失败了拥有两个线程的性能增益...... – 2010-03-11 11:40:49