2012-01-08 18 views
0

使用雙緩衝屏幕與Simple DirectMedia Layer,它是更有效的位圖傳輸的多個圖像之後調用SDL_UpdateRect一次或調用SDL_Flip前位圖傳輸每個單獨的圖像之後一旦調用它呢?換句話說,將SDL_UpdateRect導致屏幕立即更新或者它只是告訴簡單Directmedia層哪些方面必須進行更新時,屏幕翻轉?它應該如何與雙緩衝屏幕一起使用?SDL_UpdateRect在雙緩衝屏幕上的精確時間和效果是什麼?

作爲參考,這裏是SDL_UpdateRect描述。

確保給定區域的更新給定的屏幕上。 矩形必須被限制在屏幕邊界內(沒有剪輯 完成)。

如果 'X', 'ÿ', '瓦特' 和 'ħ' 全部爲0,SDL_UpdateRect將更新 整個屏幕。

回答

3

是,SDL_UpdateRect立即更新屏幕(或矩形)。

不需要聯合使用SDL_UpdateRectSDL_Flip,他們做同樣的事情,但方式不同。 不同的是,SDL_UpdateRect可以(通過複製從表面到屏幕像素和工作)只更新屏幕的一部分,並SDL_Flip刷新整個屏幕(和翻轉緩衝區的作品)。

所以,如果你使用雙緩衝屏幕,不需要撥打SDL_UpdateRect,只需在所有傳輸完成後撥打SDL_Flip

http://www.libsdl.org/docs/html/sdlsetvideomode.html

調用SDL_Flip將翻轉的緩衝區和更新屏幕。所有 繪圖都將在未顯示在 時刻的表面上進行。如果無法啓用雙緩衝,那麼SDL_Flip將只在整個屏幕上執行SDL_UpdateRect( )。

不要忘記,雙緩衝只適用於SDL_HWSURFACESDL_FULLSCREEN視頻模式。