I am a beginner in SDL graphics. I am trying to copy a certain portion of the screen to SDL_Surface. And I tried using this code but it didn't work out
//It should blit the area of the screen bounded by rct at 0,0 of the original
//now it should blit the original at 500,100 of the screen
but nothing was blitted on the screen.
but the same code worked out well when it was written this way
original=IMG_Load("pics/picture1.png"); //I loaded a picture in the original
And it worked out very well. It blitted a small part of my window i.e. screen to 500,100 of the screen
So I think there must be something wrong with my understanding about surface blitting function.
I am using SDL 1.2.14 and Code::Blocks for IDE.
And if there is a better way to do what I am trying to do, then please suggest
Thank you in advance.
2 replies to this topic
Members - Reputation: 1160
Posted 08 February 2012 - 05:16 AM
The problem is that in your first piece of code, original is not pointing to a valid SDL_Surface when you try to blit. As SDL_BlitSurface doesn't create surfaces for you, you need to use the SDL_CreateRGBSurface function to give a second surface to blit to. Keep in mind that you need to free any surface you create yourself using SDL_FreeSurface.