разыменование SDL_Surfaces? - PullRequest
0 голосов
/ 30 июля 2011

Есть ли способ скопировать поверхность SDL на другую, например, создать резервную копию, не изменяя оригинал при изменении копии?*surface = *original_surface не работает.SDL_Surface не имеет конструкторов, поэтому я не могу сделать что-либо вроде surface = new SDL_Surface (original_surface).В настоящее время я постоянно открываю исходное изображение, но для его открытия требуется больше времени, чем для завершения одного цикла.это вызывает много запаздываний и, в конечном итоге, ошибок, что приводит к завершению моей программы

1 Ответ

1 голос
/ 30 июля 2011

Вы можете создать новую совместимую поверхность:

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

А затем скопировать оригинал в копию:

SDL_BlitSurface(original, NULL, copy, NULL);
...