SDL - Transparence
-
Kann mir jemand sagen warum es bei der SDL beim "Color Keying" so kompliziert gemacht worden ist:
Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF ); SDL_SetColorKey( optimizedImage, SDL_SRCCOLORKEY, colorkey );
Warum müssen das unbedingt zwei Befehle sein? Warum hat man nicht alles in eine Funktion reingepackt?
Kann mir das jemand erklären?MfG
Stromberg
-
SDL_SetColorKey( optimizedImage, SDL_SRCCOLORKEY, SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF ) );
besser?
-
Wenn du unbedingt willst pack es dir doch selbst in ne Funktion:
int MySetColorKeyRGB(SDL_Surface* image, Uint32 flags, r, g, b) //is glaub ich n int als returnwert { return SDL_SetColorKey( image, flags, SDL_MapRGB( image->format, r, g, b ) ); }
Warums SDL_MapRGB gibt?
DerRückgabewert hängt von image->format ab, das ist zwar oft gleich, aber eben nicht immer.
Z.b. wenn deine Surface 8 Bit hat, der RGB wert ist ja immer 24 bit, muss der angegebene wert zu einem nahegelgenen 8 bit wert konvertiert werden.Wenn du mit SDL_CreateRGBSurface was eigenes erstellst, kann da dann soweit ich weiß schon alles mögliche rauskommen.
Nur der Programmierer weiß ob das format gleich bleibt oder nicht - also muss auch der entscheiden ob du irgendein Uint32 wert von nem MapRGB oder MapRGBA zwischengespeichert und weiterverwendet werden soll, oder eben jedesmal neu ein Farbwert hergeleitet werden soll.