Форум: "Игры";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизМастера помогите плиз с DirectInput ом! Найти похожие ветки
← →
NOX (2004-07-22 13:16) [0]Здраствуйте! Помогите решить такую проблему, наверняка с ней кто-то сталкивался:
использую в DirectInput8 буферную схему определения нажатия и отжатия клавиш, но вот в чём проблема,
перед выполнением команды происходит небольшая задержка, которая видна на глаз и сильно раздражает.
а при использовании схемы непосредственного опроса состояния клавиш в данный момент времени
никакой задержки нет! Списать эту задержку на тормоза системы при выполнении команды я не могу,
т.к. ничего сложного там нет, да и всё работает нормально.
Вот процедура чтения буфера:
procedure TInput.ReadKeysBuffer;
var didod : Array [0..BUFF_SIZE - 1] of TDIDEVICEOBJECTDATA;
dwElements : DWORD;
i : DWORD;
hRet : HRESULT;
k : shortint;
begin
if Keyboard = nil then
begin
Log.Add("!!! Keyboard = nil");
Exit;
end;
hRet := Keyboard.GetDeviceData (SizeOf(TDIDEVICEOBJECTDATA), @didod, dwElements, 0);
if Failed (hRet) then
begin
hRet := Keyboard.Acquire;
while hRet = DIERR_INPUTLOST do hRet := Keyboard.Acquire;
end;
if dwElements <> 0 then
for i := 0 to dwElements - 1 do
begin
if didod[i].dwData and $80 <> 0 then //клавиша нажата
begin
команды
end
else //клавиша отжата
begin
команды
end;
end;
end;
← →
cyborg © (2004-07-22 18:07) [1]Может это долго идёт, получить не может:
while hRet = DIERR_INPUTLOST do hRet := Keyboard.Acquire;
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.04 c