2011-07-30 38 views
0

有沒有辦法將SDL表面複製到另一個表面,如創建備份副本,而修改副本時不修改原始表面? *surface = *original_surface dosnt工作。 SDL_Surface沒有任何構造函數,所以我不能做任何事情,比如surface = new SDL_Surface (original_surface)。目前,我不斷地打開原始圖像,但打開圖像需要更長的時間,而不是一個循環完成。這會導致大量的滯後,而最終的錯誤,導致我的程序結束取消引用SDL_Surfaces?

+0

您可以創建一個兼容的表面(相同的格式,相同的尺寸),然後將原件複製到副本中。 –

+0

* facepalm。把它放在一個答案中,並檢查它 – calccrypto

回答

1

您可以創建一個新的兼容面:

copy = SDL_CreateRGBSurface(flags, width, height, original->format.BitsPerPixel, 
          original->format.Rmask, original->format.Gmask, 
          original->format.Bmask, original->format.Amask); 

然後的blit原來進入副本:

SDL_BlitSurface(original, NULL, copy, NULL);