我試圖用SDL 2.0.1開發一個強大的遊戲輸入系統。我希望那裏沒有輸入滯後。SDL2密鑰重複延遲
我用SDL_GetKeyboardState()
要做到這一點,但我切換到使用SDL_Event
和SDL_PollEvent()
有鍵盤的統一接口,鼠標和遊戲杆輸入(與一切事件完成)。
這工作得很好,但如果我要當鍵被按下(例如移動一個字符)的連續輸入,則存在鍵被重複SDL通知之前稍有延遲。
在SDL 1.2中,可以使用函數調用設置此延遲。現在它不再(據我所知)。
我該如何消除這種延遲?我應該切換回直接讀取鍵盤狀態嗎?
供參考,在這裏是如何我目前越來越輸入...
SDL_Event sdlEvent;
while (running)
{
SDL_PollEvent(&sdlEvent);
switch (sdlEvent.type)
{
case SDL_QUIT:
running = false;
break;
case SDL_KEYDOWN:
printf("Key down!\n");
break;
default:
break;
}
}
的應用程序打印"Key down!"
,那麼小的時候沒有什麼(大約一秒鐘),然後反覆打印,直到關鍵發行了。
那麼我該如何擺脫這種延遲?
您在此期間是否收到該密鑰的'SDL_KEYUP'事件? – olevegard
不需要。在我釋放密鑰之前,它都是「SDL_KEYDOWN」事件。然後它是一個持續不斷的'SDL_KEYUP'事件流(直到我移動鼠標或按另一個鍵,所以我猜如果沒有事件,'SDL_PollEvent(&sdlEvent)'不會改變'sdlEvent')。 – RaptorDotCpp