Привет, я работаю над игрой SDL / C, я сделал прокрутка камеры с
большой фон (6000 * 1024) и (1024 * 768) экран,
game.screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
так что если я захочу что-то стряхнуть с экрана в качестве разряда:
apply_surface( xxx, yyy, map.BALL, game.screen, NULL );
будет следуйте за камерой при движении, для врагов дело обстоит не так, как на экране, а на экране!
так что, если я что-то выбрасываю на задний план в качестве пункта назначения, у меня возникает проблема,
apply_surface( xxx, yyy, map.BALL, map.background, NULL );
старые изображения остаются на заднем плане при перемещении в виде следующих картинок:
Сначала я должен сказать, что ваш способ осуществления прокрутки камеры довольно тяжелый. Я бы порекомендовал вам просто рисовать объекты прямо на поверхности экрана с учетом положения камеры.
Если вы хотите придерживаться своего плана, вы должны очистить фон, прежде чем перерисовывать его. Это можно сделать с помощью команды SDL_FillRect.
// Replace 101, 102, 103 with the background color you want
SDL_FillRect(map.background, NULL, SDL_MapRGB(map.background->format, 101, 102, 103));
Других решений пока нет …