Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net DirectX输入是游戏中键盘处理的正确选择吗?_.net_Windows_Directx - Fatal编程技术网

.net DirectX输入是游戏中键盘处理的正确选择吗?

.net DirectX输入是游戏中键盘处理的正确选择吗?,.net,windows,directx,.net,Windows,Directx,在游戏等程序中,处理键盘输入的首选方式是什么?directX输入是最简单的选择吗?其他选项是什么?DirectInput(如果您指的是directX输入)已被弃用。一、 就个人而言,处理发送到主窗口WndProc的消息就足够了。看,或者 编辑:我假设你正在使用Directx制作游戏。如果你不是,这真的取决于你如何使你的游戏选择输入。如果您使用的是跨平台的现有库,它将有一种内置的处理输入的方法。这主要取决于您打算在游戏中使用的框架/操作系统 选项太多,此处无法全部列出,但包括: XNA(Wind

在游戏等程序中,处理键盘输入的首选方式是什么?directX输入是最简单的选择吗?其他选项是什么?

DirectInput(如果您指的是directX输入)已被弃用。一、 就个人而言,处理发送到主窗口WndProc的消息就足够了。看,或者


编辑:我假设你正在使用Directx制作游戏。如果你不是,这真的取决于你如何使你的游戏选择输入。如果您使用的是跨平台的现有库,它将有一种内置的处理输入的方法。

这主要取决于您打算在游戏中使用的框架/操作系统

选项太多,此处无法全部列出,但包括:

  • XNA(Windows+XBox 360)
  • DirectX(Windows)
  • Flash(跨平台)
  • Silverlight(应跨平台)
各种集成游戏引擎:

  • 扭力
  • 黑暗gdk
跨平台图书馆

  • 快板
  • LWJGL

坦率地说,处理输入将是你最大的问题,这是非常不可能的,所以选择一个适合你需要的解决方案(特别是在总体能力/复杂性方面),并从中选择处理输入的方式。

DirectInput没有错。工作良好,让您可以通过。。。呃。。。“友好”界面:)如果你想在游戏中获得真正的响应,轮询硬件是唯一的方法


依靠Windows消息泵和处理Windows消息,依我看,这是一种严重的失败,通常您会选择最适合您的窗口系统的输入处理方法。如果您正在使用GLUT/SDL/SFML或任何其他窗口工具包,您将从它们那里获得您的输入。否则,如果您正在使用自己的操作系统,那么就需要在使用操作系统输入消息或DirectInput之间进行切换,这两种方式都能很好地用于游戏


如果您正在考虑鼠标输入,请不要使用DirectInput,除非您打算应用非常具体的鼠标弹道。DirectInput鼠标运动没有应用用户的鼠标球视学(通过鼠标控制面板设置),对大多数用户来说会感到非常尴尬。

DirectInput为键盘输入所做的一切就是创建一个线程,观看WM_*消息,并增加额外线程的开销。甚至微软也说,你应该只接收WM_*消息。我看到一些EPIC失败,但不在windows消息队列中