2010-06-05 29 views
1

這是我的情況。我正在使用OpenGL和WinAPI創建繪圖應用程序。我的OpenGL框架具有滾動條,它在呈現滾動消息時呈現屏幕並修改GlTranslatef。問題在於,我得到的圖形太多,滾動條響應性較差,因爲它無法在每次滾動消息時重新渲染它。我怎麼能這樣做,所以滾動條具有優先權。如果它會影響滾動的平滑度,我希望它跳過繪圖。我想在一個單獨的線程上做渲染,但我被告知所有的UI應該保持在同一個線程上。 謝謝使用OpenGL和WinAPI跳過幀?

回答

1

您可以測量繪圖程序的運行時間。當它大於您決定的閾值時,您應該抑制更新或減少(如果可以)。

+0

我看到的唯一問題是如果用戶想要精確移動,那麼如果我只渲染1/3的時間,看起來很奇怪 – jmasterx 2010-06-05 17:17:00

+0

同意。但是,如果您在同一個執行線程中運行,除非您加快繪圖例程,否則在用戶輸入之後製作滾動條實際上​​是不可能的。 計算數學:如果它需要0.05毫秒來繪製一個對象,並且您有2000對象是100毫秒。即使您在不同線程上繪製代碼,它也會以10 FPS進行繪製。並且明顯滯後。 如果你想讓你的滾動條更快,並且你的內容動畫要流暢,那麼你的繪畫速度應該更快。 你的繪圖代碼是怎樣的? 你的環境/語言是什麼? – zenerino 2010-06-05 19:58:03

+0

我正在用GLUTesselator和OpenGL繪製多邊形。由於形狀是可編輯的,我不能使用顯示列表... – jmasterx 2010-06-05 20:16:15