【问题标题】:Gamepad code on OS X: Buh?OS X 上的游戏手柄代码:嗯?
【发布时间】:2008-09-18 18:06:13
【问题描述】:

在我尝试为 OS X 编写游戏手柄代码之前,我一直认为自己是一个不错的程序员。现在我觉得自己很没用。

有人知道我可以在我的(非免费)游戏中合法使用的任何代码吗?

在 OS X 上与游戏手柄对话真的这么难吗?我错过了什么?

【问题讨论】:

    标签: macos iokit


    【解决方案1】:

    查看 HID 管理器,尤其是新的 HID Manager APIs in Leopard。它有点冗长,但其本质是可以在连接和分离设备时获取回调,并在来自这些设备的事件入队时获取回调。

    如果您正在使用 Cocoa,Dave Dribin 具有 DDHidLib,它在 HID 管理器之上提供了更好的 Objective-C API,并且也可以在 Tiger 上运行。

    【讨论】:

    • HID 管理器是我一直在争论的问题(尽管我没有使用 Leopard 专用的东西)。我只能说,如果有人想发现自己作为编码员的极限,那么尝试从 HID 管理器中获取游戏手柄数据是一个不错的选择。
    • 如果可以选择,最好使用新的 Leopard 专用 API。旧的 API 非常粗略,我怀疑 Snow Leopard 是否会支持它。不久前我在其中发现了一个重大安全漏洞(CVE-2007-0724),Apple 花了 11.5 个月才提出补丁。
    【解决方案2】:

    原来答案是 Apple 的 HID_Utilities,它(在某种程度上)简化了与 HID 管理器对话的工作。

    John Carmack 说 Apple 不关心游戏时真是一针见血……

    【讨论】:

      【解决方案3】:

      在 OSX 上获取游戏手柄事件的最快方法是使用游戏库 SDL。 您不必使用整个库,只需初始化操纵杆子系统即可 然后轮询或等待 SDL_JOYAXISMOTION 和 SDL_JOYBUTTONUP/DOWN 事件。 SDL 拥有 LGPL 许可证,因此您可以在非免费游戏中动态链接到它。

      简单!

      【讨论】:

      • 我最初查看了 SDL 代码,很不情愿地决定我什至不能使用 LGPL 代码。但事实证明,SDL 操纵杆代码是我最终使用的 Apple 的 HID_Utilities 代码的剪切粘贴,所以结果相同。
      【解决方案4】:

      没有代码,但使用InputSprocket 机制与游戏手柄等进行通信非常简单。您遇到的具体问题是什么?

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      相关资源
      最近更新 更多