Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


SDL color issues for per pixel collision.


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
1 reply to this topic

#1 razieliyo   Members   -  Reputation: 121

Like
0Likes
Like

Posted 12 July 2012 - 02:19 PM

Hi.

I'm trying to implement a per pixel collision function. I load the image with SDL_LoadBMP and then, set the transparent color with SDL_SetColorKey call. The next step is to store that key color with SDL_MapRGB inside a Uint32 (I think that matters for my issue). That member is which I'm going to use then to check if the pixel is "free" or not.

Everything seemed to fit, but I noticed that in the pixel array, the "free" color is, for example (magenta 0xFF00FF) 0xFFFF00FF, but the one that is created with SDL_MapRGB is 0xFF00FF. One more byte for the pixel array format, so I thought it was because of the alpha data that I missed when creating the transparent color with SDL_MapRGB. Tried with SDL_MapRGB and passing 255 or 0 as alpha argument.

Anyway, the problem persists. When I create the color with SDL_MapRGBA, the data stored is still 0xFF00FF, and the pixel array is 0xFFFF00FF.

Any idea about what's going wrong? Can it be a format issue? I've thought of discarding that 2 extra bytes with an AND bit operation, but don't know if it is very safe, and if it were, I don't think it's a good solution for my problem, there should be more sdl-color-format theory behind this.

MORE INFO: I'm accesing pixel array with, say:
// in constructor...
transparent = SDL_MapRGBA (255, 00, 255, 255); // also tried with alpha 0

// ..more code..
Uint32 *pix = (Uint32 *) surf->pixels;
// bla bla bla
if (pix[y*width + x] == transparent) return true;
to access pixel in (x,y) coordinates, maybe this is wrong, but don't really think so.

Thanks.

Edited by razieliyo, 12 July 2012 - 08:35 PM.


Sponsor:

#2 razieliyo   Members   -  Reputation: 121

Like
0Likes
Like

Posted 17 July 2012 - 03:56 PM

Solved with http://www.libsdl.org/cgi/docwiki.cgi/Introduction_to_SDL_Video#getpixel

Thx!




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