0
我的問題是,在KeyDown上,幾乎有一秒的延遲,直到所有事件隊列開始處理,請參閱video demo here。其次,並行鍵不處理,我可以去W,S或其他,但不能同時。KeyDown延遲C++ UWP Windows 10 Direct3D 12應用程序
我已經嘗試運行的渲染()異步和使用ProcessUntiLQuit
,改變我讀輸入的方式,等等......我目前的經典Run(while not closed)
循環
使用ProcessAllIfPresent
在我的IFrameworkView實例應用程序
,以下是我的KeyDown處理程序:
void OnKeyDown(CoreWindow^ wnd, KeyEventArgs^ args) {
for(int i = 0; i < g_MainApplication->InputMap().size(); ++i) {
if(g_MainApplication->InputMap()[i] == args->VirtualKey) {
g_MainApplication->FlagInput((Application::INPUT_MAP)i);
}
}
}
總共只有K個映射鍵,因此它運行時間不變。這將設置所有的標誌,並將其傳遞給應用程序,它簡單地直接調用「UpdatePosition」方法修改值:
void MyApp::ProcessKeyboard(INPUT_MAP key, double delta) {
delta *= g_SpeedModifier;
switch(key) {
case FORWARD:
g_SelectedEntity->Translate(DIRECTION::WORLD_FORWARD, static_cast<float>(delta));
break;
... // more of the same code here.
}
該應用程序呈現在60 FPS。
感謝您的幫助。
如果你想基本上把鍵盤當作'控制器',你可能需要查看[DirectX]中的[Keyboard](https://github.com/Microsoft/DirectXTK/wiki/Keyboard)類。工具包](https://github.com/Microsoft/DirectXTK12/)。 –