2011-09-17 118 views
2

我正在用SDL編程一個遊戲。我已經通過SDL_gfx庫的zoomSurface功能實現了可縮放的窗口大小,但男孩的幀速率會有所下降(大概是因爲每次調用zoomSurface時,都會創建一個全新的SDL_Surface實例,爲了不斷縮放,您需要調用它每一幀)。縮放SDL視圖比SDL_gfx縮放表面更快嗎?

我對使用SDL進行編程相當新穎,所以我不知道它可能具有任何其他功能。有沒有更快的方法去做這件事?

回答

1

SDL並不真的支持這一點。

最「正確」的方式是使用底層圖形API(OpenGL或DirectX)來進行縮放。例如,如果您在底層使用OpenGL,請致電glScale{f,d}。我相信Windows上的SDL被編譯爲使用DirectX,所以這不是一個便攜式解決方案。

另一種方法是在需要通過某種因素縮放所有內容時重新創建所有表面。這很慢,但不需要每一幀都完成;只有在縮放因子改變時才需要進行一次,然後縮放後的曲面可以保存在內存中並在每幀中重新使用。

請記住,2D遊戲通常不允許縮放調整大小,因爲除非使用某些過濾器,否則精靈在伸展時往往看起來很可怕。

+0

是的,我討厭在遊戲中伸展屏幕。這只是一個配置文件,可以讓你選擇一個窗口縮放因子(所以你可以播放它2倍,3倍(等)分辨率)。也不,SDL for Windows支持OpenGL就好了(或者至少是我編譯的副本)......我可能會用這種方法。謝謝! – Hinchy