Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


DX-ColorKeying prob.


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 ECKILLER   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 January 2000 - 12:19 PM

Hi, 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. void Animate_Images() { RECT rect; // background lpDDSBack->BltFast(0,0,dojo,NULL,DDBLTFAST_WAIT/DDBLTFAST_SRCCOLORKEY); rect.left = 0; rect.top = 0; rect.bottom = 200; rect.right = 200; // draw the current sprite cell lpDDSBack->BltFast(0,200,arr_anime[current_image],&rect,DDBL TFAST_WAIT/DDBLTFAST_SRCCOLORKEY); lpDDSPrimary->Flip(0,DDFLIP_WAIT); current_image++; if(current_image >= IMAGE_COUNT) current_image = 0; Sleep(200); } void Set_Color_Key() { DDPIXELFORMAT ddpf; ddpf.dwSize = sizeof(ddpf); lpDDSPrimary->GetPixelFormat(&ddpf); // determine proper key for pixel format, green KeyColor = ddpf.dwGBitMask; // set color keys DDCOLORKEY key; key.dwColorSpaceHighValue = KeyColor; key.dwColorSpaceLowValue = KeyColor; for (int i = 0; i < IMAGE_COUNT; i++) arr_anime->SetColorKey(DDCKEY_SRCBLT, &key); dojo->SetColorKey(DDCKEY_SRCBLT, &key); } void Draw_Logo() { // draw my logo lpDDSBack->BltFast(0,0,logo,NULL,DDBLTFAST_WAIT); first_run = false; lpDDSPrimary->Flip(0,DDFLIP_WAIT); Sleep(2000); } ECKILLER

Sponsor:

#2 Armera   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 January 2000 - 05:34 PM

The only thing I can see is that in your Bltfast statements in between the parameters instead of having "/" put a "/".
That should clear things up.

#3 frizb   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 January 2000 - 07:23 PM

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

ie-
lpDDSBack->SetColorkey(DDCKEY_SRCBLT, &colorkey);
=======================================================

I would think one of those has to be the problem. Good luck!



Still Learning...

#4 frizb   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 January 2000 - 11:01 PM

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!

Still Learning...

#5 blaze   Members   -  Reputation: 122

Like
Likes
Like

Posted 19 January 2000 - 06:48 AM

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).

--Shannon Schlomer, BLAZE Technologies, Inc.

#6 frizb   Members   -  Reputation: 122

Like
Likes
Like

Posted 19 January 2000 - 03:57 PM

Makes sense to me. I just wasn''t thinking when I did it and it caught me off guard.

Still Learning...




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS