我正在用Java製作2D遊戲,導致低FPS(在我的慢速筆記本電腦上)的主要問題之一是不得不將複雜結構重新繪製到Graphics實例,例如帶有標記的刻度盤。緩存2D繪圖的一部分是否是一個好習慣?
除非窗口調整大小,否則刻度盤及其標記將永遠不會改變,所以我認爲將繪製到BufferedImage
並重新繪製圖像而不是重新繪製細節是個好主意。針的位置明顯改變,所以這可以繪製在上面。
我從來沒有聽說過這樣做是爲了改進2D遊戲的FPS,所以我想知道是否實際上存儲圖像緩存的好方法或者是否有更好的方法來解決這類問題?我有沒有考慮過與此相關的任何問題?
由於CPU將整個精靈加載到圖形卡內存中,所以在精靈中渲染通常更快。隨後的調用然後引用已經加載的圖形卡內存。相比之下,一些drawXXX()命令通常不會存儲到圖形卡內存中,因此CPU必須一次執行一次,導致大量的PCI總線通信。一些庫支持「繪圖列表」,其中可以將多個drawXXX(...)命令加載到圖形卡存儲器中並稱爲單個例程;儘管我很長一段時間沒有對此感到困惑。 – 2012-01-27 16:42:59
@EdwinBuck漂亮的背景信息,+1 – vaughandroid 2012-01-27 17:01:08