Является ли вход DirectX правильным выбором для работы с клавиатурой в играх? - PullRequest
2 голосов
/ 05 февраля 2009

Каков предпочтительный способ обработки ввода с клавиатуры в таких программах, как игры? DirectX input - самый простой выбор? Какие есть другие варианты?

Ответы [ 5 ]

2 голосов
/ 05 февраля 2009

DirectInput (если это то, что вы подразумеваете под вводом DirectX) устарел. Лично я считаю достаточным обрабатывать сообщения, отправленные в WndProc вашего главного окна. См. WMINPUT или WMKEYDOWN и WMKEYUP

РЕДАКТИРОВАТЬ: я предполагал, что вы делаете игру, используя Directx. Если нет, это действительно зависит от того, как вы делаете свою игру, чтобы выбрать вход. Если вы используете кроссплатформенную существующую библиотеку, она будет иметь встроенный способ обработки ввода.

1 голос
/ 29 июля 2009

Все, что DirectInput выполняет для ввода с клавиатуры, - это создание потока, просмотр сообщений WM_ * и добавление дополнительной информации о дополнительном потоке. Даже Microsoft говорит, что вы должны просто сообщения WM_ *. Я вижу EPIC FAIL , но не в части очереди сообщений Windows.

0 голосов
/ 05 февраля 2009

Как правило, вы выбираете метод обработки ввода, который наилучшим образом соответствует вашей системе управления окнами. Если вы используете GLUT / SDL / SFML или любой другой оконный инструментарий, вы получите от них свой вклад. В противном случае, если вы катаетесь самостоятельно, то это между использованием входных сообщений ОС или DirectInput, оба из которых работают безупречно для игр.

Если вы думаете о вводе мышью, НЕ используйте DirectInput, если у вас нет особой баллистики мыши, которую вы собираетесь применить. При перемещении мыши в DirectInput к нему не применяется баллиситика мыши (заданная с помощью панели управления мышью), и это будет очень неудобно для большинства пользователей.

0 голосов
/ 05 февраля 2009

Ничего плохого в DirectInput. Работает хорошо и дает вам прямой доступ к аппаратному обеспечению через ... э ... "дружественный" интерфейс :) Опрос аппаратного обеспечения - единственный путь, если вы хотите по-настоящему отзывчивости в вашей игре.

Опора на насос сообщений Windows и обработку сообщений Windows - это, imho, EPIC FAIL .

0 голосов
/ 05 февраля 2009

Это в основном зависит от того, какую платформу / ОС вы собираетесь использовать для своей игры.

Параметры слишком многочисленны для всего списка здесь, но включают:

  • XNA (Windows + XBox 360)
  • DirectX (Windows)
  • Flash (кроссплатформенный)
  • Silverlight (должен быть кроссплатформенным)

Различные встроенные игровые движки:

  • Крутящий момент
  • Dark GDK
  • ...

Кроссплатформенные библиотеки

  • Allegro
  • LWJGL
  • ...

Честно говоря, это крайне непросто, чем обработка ввода будет вашей самой большой проблемой, поэтому выберите решение, которое соответствует вашим потребностям (в частности, с точки зрения возможностей и сложности), и выберите способ обработки ввода оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...