我目前有一個應用程序,我正在編寫的C#(使用.NET),需要我儘快啓動一個計時器用戶在屏幕上看到一個圖像,直到他們用按鍵進行響應。有無論如何知道什麼時候屏幕已更新/刷新(OpenGL或DirectX也許?)
現在我意識到,實際上這是非常困難的給予顯示器輸入延遲和響應時間,鍵盤所花費的時間,以實際發送郵件,操作系統來處理它,等
但我想我最好把它降低到主要是一個常量錯誤(響應時間結果將用於比較一個用戶和下一個用戶,所以一個常量錯誤並不是真正的問題)。然而令人討厭的障礙是由顯示器刷新率引起的變量,因爲當我的onPaint消息被調用並完成時,它並不意味着圖像有實際上已被處理並從圖形緩衝區發送?
不幸的是時間限制和其他承諾會逼真地限制我繼續在c#for windows中執行此任務。
所以我想知道的是,如果在OpenGL或DirectX中處理所有繪圖,或者對我來說更好,如果可以在屏幕更新時使用OpenGL或DirectX創建事件?
以前給過我的另一個建議是關於V-Sync,如果我關掉它是一旦它被繪製就發送圖像?而不是以與顯示器刷新速率同步的設定速率發送圖像?
你需要什麼精度爲你的計時器? –
儘可能精確,如果我能在1ms內達到那將是理想的!我目前使用的秒錶,據我所知它只是一個精密計時器的包裝,我也運行在一個單獨的線程提升到高優先級的計時器(與應用程序運行在相同的優先級,但其他線程下降到正常,應用程序將以絕對最小的其他應用程序和進程在後臺運行) – aceaudio
任何比10ms更糟的事情可能會成爲一個問題! – aceaudio