2012-06-30 34 views
1

我是C++和SDL的初學者,但我一直在開發遊戲多年。C++ - SDL:Blitting性能問題

我之所以選擇SDL是因爲我想要的只是一款2D遊戲,但我並不滿意。與表面一起工作的功能消耗了很多能量,說實話太多了。

當我第一次使用SDL時,我得到了30 FPS。然後我發現有關優化曲面,幀率跳到60.另外,將像素格式從24位改爲32位將其提高到100.

在我看來,與其他遊戲開發和編程語言庫相比,弱。我一直認爲這仍然是我的錯,如果我已經正確設置了一切,我的FPS可能會飛漲。

所以我一直在測試,發現沒有代碼運行(不包括我的FPS指標)可以產生400 FPS。然而,使用SDL_FillRect()函數清除屏幕會將其刪除到100.然後,對於每個繪製的精靈來說,幀率會變得越來越低。

這真的應該是這麼慢嗎?

+0

您正在以相同的[格式](http://sdl.beuc.net/sdl.wiki/SDL_DisplayFormat)視頻傳輸的曲面? – talles

回答

1

首先,100 FPS不慢。無論如何,由於顯示器刷新率的原因,在大多數情況下,大約60的值都不相關。

其次,你blitting什麼樣的表面?我記得當我做了一個大型的SDL遊戲時,我真的很驚訝地發現,我擁有的一個特定圖像正在永遠消失。但擺弄抖動的質量有點讓它幾乎立即再次開始blitting。我認爲SDL在內部使用運行長度編碼,因此包含運行的圖像會更快地出現。

+0

我使用的精靈都是從位圖文件加載的。每個大小約爲100 x 100。 – Aaron

+0

屏幕上顯示的主表面具有HWSURFACE和DOUBLEBUF標誌。將HWSURFACE更改爲SWSURFACE並刪除DOUBLEBUF對幀率沒有影響。 – Aaron