Конгер Д.
Физика для разработчиков компьютерных игр
стр. 397

Введение в Directlnput

Все предшествующие программы из этой книги не требовали ввода данных. Но игры должны реагировать на действия пользователя. В нескольких последних главах книги мы создадим похожие на игры программы, в которых используются рассмотренные нами физические модели. Эти программы интерактивны, и прежде чем начать изучать их, нам нужно разобраться с основами Directlnput.

Directlnput не использует стандартные для Windows процедуры обработки действий пользователя. Это необходимо, поскольку стандартные процедуры слишком медлительны, чтобы подходить для игр. Directlnput непосредственно обращается к драйверам устройств ввода. Он может обеспечить реагирование на ввод в реальном времени, которое требуется для быстрых динамичных игр.

Поскольку Directlnput обращается непосредственно к драйверам устройств, он может обеспечить два режима ввода. Первый - небуфери-зованный ввод (unbuffered input) - просто сообщает состояние устройства ввода в момент запроса. Он не передает информации об изменениях этого состояния. Проще говоря, если раньше кнопка была нажата, а сейчас - нет, то небуферизованный вывод не сохранит информации об этом переходе. Он только сообщит, что в данный момент кнопка не нажата. Если ваша программа использует небуферизованный ввод, она должна сама заниматься сохранением предыдущих состояний. Это значит, что вы получаете очень быстрый ввод, но должны писать довольно сложные процедуры его обработки в программе.

Второй режим ввода, поддерживаемый Directlnput - это буферизованный ввод (buffered input). Этот режим похож на режим работы сообщений Windows. Когда состояние устройства изменяется, например, пользователь нажимает клавишу на клавиатуре, Directlnput генерирует соответствующее событие и помещает его в буфер. Программа считывает содержимое буфера, когда ей это нужно.

Directlnput различает три разновидности устройств ввода: клавиатуры, мыши и джойстики. Это не значит, что ваша игра не сможет поддерживать более экзотические устройства, вроде геймпадов или рулей. С точки зрения Directlnput любое устройство ввода, которое не является клавиатурой или мышью, является джойстиком. Соответственно, ваши игры могут поддерживать геймпады и рули, выдавая их за джойстики.

Directlnput должен получить контроль над устройствами ввода, прежде чем использующая его программа сможет получать от этих устройств информацию. Лучше всего делать это, когда программа активна и когда с этих устройств поступают данные.



Новости
Список персонажей SoulCalibur 6 пополнил Вольдо
В Сети появился новый трейлер SoulCalibur 6, посвящённый Вольдо — он пополнил список персонажей, которые будут доступны в день релиза игры.
Анонсирован скорый выход обновления «Ночная жизнь» в GTA Online
Компания Rockstar представила трейлер обновления «Ночная жизнь» для GTA Online.