2

當我在VS2012中調試我的應用程序並崩潰時,輸入(鼠標和鍵盤)開始滯後,fps下降到0.3或更小,我甚至無法移動鼠標無需等待3秒鐘......唯一的解決方案是執行Shift-F5,它將結束調試,並且每次都很好。調試時視覺工作室極端滯後峯值

更有趣的是,唯一落後的東西是輸入,整個背景完美無缺,文本插入符以正常速率閃爍,並且鼠標移到按鈕上時工具提示非常生動。我使用allegro 4.2編譯項目(我必須使用它,解釋原因需要很長時間)。

我沒有擴展,一個相當快的PC應該能夠處理調試......

林感興趣的任何解決方案,它可能會弄髒/ hackish的......當然,我可以提供更多的信息,如果需要。

感謝您的任何幫助。

編輯:通過論壇閱讀我發現一些關於「自動」窗口或類似的信息(不記得準確,無法找到它),這是做一些「後臺任務」,並導致滯後...你認爲在單獨的核心上運行它會解決這個問題嗎?

回答

6

遇到斷點,涉及到原始輸入API時多秒攤位的故事:http://the-witness.net/news/2012/12/finding-and-fixing-a-five-second-stall/

這是自從我上次見到這種自己的事情很長一段時間,但我似乎記得在我的情況下,罪魁禍首是DirectInput。 (鑑於上述故事,這是有道理的,因爲DirectInput一直是原始輸入API的封裝。)我認爲解決方案是使用仿真的鍵盤和鼠標設備,而不是默認的設備,將其中一個仿真設備GUID傳遞到IDirectInput8_CreateDevice。簡要討論在這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/ee416845%28v=vs.85%29.aspx

(我不記得合作和排他性水平是否發揮了作用 - 這可能是值得嘗試改變這些了。)

+0

很大的幫助。我希望這能夠完成這項工作。我目前離開了,所以當我回家時,我要做的第一件事就是檢查它是否解決了問題。看起來可能是這樣。謝謝! –

+0

在這裏,你去先生。有用和很好的答案。 DirectInput可能會導致延遲(檢查源代碼) - 無論如何,我認爲使用SFML重寫整個內容將比修復舊的Allegro本身更快更容易... –

+0

感謝您提供關於DirectInput的提示,原來是我的問題。儘管將它設置爲使用模擬鼠標根本沒有任何幫助,但是我將我的協作級別從「DISCL_FOREGROUND | DISCL_NONEXCLUSIVE」更改爲「DISCL_FOREGROUND | DISCL_EXCLUSIVE」 –