Her''s my problem. I first blt my logo to the screen, which works fine, then i blit my background to the screen and begin animating. However my sprite''s background is being showed, the color keying isnt working. Here''s my code that you may need to help. Also my function order is correct in the calling of them, these are just the definitions.
rect.left = 0;
rect.top = 0;
rect.bottom = 200;
rect.right = 200;
// draw the current sprite cell
if(current_image >= IMAGE_COUNT)
current_image = 0;
ddpf.dwSize = sizeof(ddpf);
// determine proper key for pixel format, green
KeyColor = ddpf.dwGBitMask;
// set color keys
key.dwColorSpaceHighValue = KeyColor;
key.dwColorSpaceLowValue = KeyColor;
for (int i = 0; i < IMAGE_COUNT; i++)
// draw my logo
first_run = false;
Is it showing the whole sprite background? You may want to open up an image in a graphics editor (ie-PSP) and double check that your colors are exactly what you set in the color key. Sometimes when resizing an image this can throw the colors off slightly. Also, are you using the DDSD_CKSRCBLT flag when you create the offscreen surfaces? Also check that you call
Well, if it wasn''t any of the above problems, I may have just found it on my own game. I had the same problem. How weird. I had my screen set to 32bpp, and my colorkey was RGB(0, 255, 0). I switched my screen depth to 16bpp and suddenly no colorkey. Never crossed my mine. Hope that helped!
To use color keying across different bit depths and surface types, the rgb components of the color key need to be scaled based on the rgb bit masks of the surface you want to color key.
For instance, on a 32 bit surface, the RGB values range from 0 to 255. In 16-bit color, if 555 mode is used, the RGB values range from 0 to 31. If 565 mode is used, the R and B values range from 0 to 31 and the G value ranges from 0 to 63.
So, if your original bitmap is 32 bit color and you want to color key pure green (0,255,0) in 565 mode, you need to set the color key to 00000000000000000000011111100000 (binary).