[SDL] Sorry to bother you
Jonathan Dearborn
grimfang4 at hotmail.com
Sat Dec 22 16:48:20 PST 2007
Hey,
Does colorkeying definitely work with SDL_SRCALPHA?
Jonny D
From: madsj_6 at hotmail.com
To: sdl at lists.libsdl.org
Date: Sat, 22 Dec 2007 13:48:33 +0000
Subject: [SDL] Sorry to bother you
Hello. I have a very stupid problem. I have tried for several days to get it working, but i can't seem to get it right.
I am actually trying to do the simple thing to make a empty surface, and then draw another image into it. My code is the following (c++):
//code for drawing from one surface to another:
void apply_surface( float x, float y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
{
//Holds offsets
SDL_Rect offset;
//Get offsets
offset.x = x;
offset.y = y;
//Blit
SDL_BlitSurface( source, clip, destination, &offset );
}
//code for loading an image from memory:
SDL_Surface *load_image( string filename )
{
//The image that's loaded
SDL_Surface* loadedImage = NULL;
//The optimized surface that will be used
SDL_Surface* optimizedImage = NULL;
//Load the image
loadedImage = IMG_Load( filename.c_str() );
//If the image loaded
if( loadedImage != NULL )
{
SDL_SetColorKey( loadedImage, SDL_SRCCOLORKEY, SDL_MapRGB( loadedImage->format, 255, 0, 255 ) );
//Create an optimized surface
optimizedImage = SDL_DisplayFormatAlpha( loadedImage );
//Free the old surface
SDL_FreeSurface( loadedImage );
}
//Return the optimized surface
return optimizedImage;
}
//the code for making the empty surface(tempframe) and applying the appropriate sprite from the sprite sheet
// loaded from memory:
//create an empty surface
SDL_Surface* tempframe = SDL_CreateRGBSurface( SDL_SWSURFACE|SDL_SRCALPHA,
genseframes[frame1].w,
genseframes[frame1].h,
32,
gense->format->Rmask,
gense->format->Gmask,
gense->format->Bmask,
gense->format->Amask);
//fill it with the colorkey color
SDL_FillRect(tempframe, NULL,SDL_MapRGB(tempframe->format, 255, 0, 255));
//assaign the colorkey
SDL_SetColorKey(tempframe, SDL_SRCCOLORKEY , SDL_MapRGB(tempframe->format, 255, 0, 255)) ;
//draw the current frame from the gense spritesheet
apply_surface(0,0,gense,tempframe,&genseframes[frame1]);
/////////////////////////////
the result is the following (look at the sprite on the left with the pink rectangle around it, it is supposed to be completely transparent)
http://img297.imageshack.us/my.php?image=notdrawingqv8.jpg
Thanks for your time,
Mads
Kombiner det bedste fra Windows og nettet med Windows Live Hent det nu!
_________________________________________________________________
i’m is proud to present Cause Effect, a series about real people making a difference.
http://im.live.com/Messenger/IM/MTV/?source=text_Cause_Effect
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20071222/174da942/attachment.html
More information about the SDL
mailing list