How can I clear a SDL_Surface to be replaced with another one?

Ólafur Waage picture Ólafur Waage · Oct 22, 2009 · Viewed 13.3k times · Source

Been trying to find this online for a while now.

I have a SDL_Surface with some content (in one it's text, in another is a part of a sprite). Inside the game loop I get the data onto the screen fine. But then it loops again and it doesn't replace the old data but just writes over it. So in the case of the text, it becomes a mess.

I've tried SDL_FreeSurface and it didn't work, anyone know another way?

fpsStream.str("");
fpsStream << fps.get_ticks();
fpsString = fpsStream.str();

game.fpsSurface = TTF_RenderText_Solid(game.fpsFont, fpsString.c_str(), textColor);
game.BlitSurface(0, 0, game.fpsSurface, game.screen);

Answer

oold picture oold · Oct 22, 2009

Try something like: SDL_FillRect(screen, NULL, 0x000000);
at the beginning of your loop.