[SDL] "Color Keying"...
Ostatnio zmodyfikowano 2011-10-28 13:13
mattheo Temat założony przez niniejszego użytkownika |
[SDL] "Color Keying"... » 2011-10-28 10:45:52 Witam. Otoz mam problem z wycienciem zbednego tla z obrazkow otoz uzywam do tego takiej funkcji :
SDL_Surface * load_img( std::string filename ) { SDL_Surface * ldimg = NULL; SDL_Surface * opimg = NULL; ldimg = IMG_Load( filename.c_str() ); if( ldimg != NULL ) { opimg = SDL_DisplayFormat( ldimg ); SDL_FreeSurface( ldimg ); } if( opimg != NULL ) { Uint32 colorkey = SDL_MapRGB( opimg->format, 0x00, 0xFF, 0xFF ); SDL_SetColorKey( opimg, SDL_SRCCOLORKEY, colorkey ); } return opimg; }
Lecz po wycienciu nadal zostawia "resztki" co niezbyt ladnie wyglada oto przyklad: http://imageshack.us/photo/my-images/231/lolllqd.jpg/
jak pozbyc sie owego obrysu? Moze to problem nie odpowiedniego formatu jaki bylby najlepszy do gry? |
|
DejaVu |
» 2011-10-28 10:58:43 Może wystarczy wyłączyć antyaliasing dla tej tekstury? Osobiście to poleciłbym Ci bibliotekę SFML - tam masz wsparcie chociażby dla formatu plików *.png, a *.png obsługuje kanał alfa, więc nie musisz się bawić w obrabianie obrazu tylko wczytujesz to co chcesz mieć. Przykładowo w SFML-u cała Twoja praca z obrazkiem sprowadziłaby się do:
sf::Image obraz; obraz.LoadFromFile( "obrazek.png" );
/edit:
Natomiast co do SDL-a to jak już wspomniałem sugeruję spróbować wyłączyć antyaliasing (o ile coś takiego w ogóle tam jest). |
|
mattheo Temat założony przez niniejszego użytkownika |
» 2011-10-28 11:24:11 to niestety nie rozwiazuuje mojego problemu.. bo ja musze to zrobic w SDLu.. cos wyczytalem na temat zapisu obrazku w formacie png z uzyciem kanalu alpha lecz nie potrafie tego zrobic :/ |
|
DejaVu |
» 2011-10-28 11:26:12 Nie wiem czy SDL obsługuje format plików *.png... generalnie w SDL-u tworzy się bitmapę z kolorem różowym i potem ten różowy robi za kolor przezroczysty. |
|
mattheo Temat założony przez niniejszego użytkownika |
» 2011-10-28 11:34:05 obsluguje gdy dodamy dodatkowa biblioteke i niby nie musi byc kolor rozowy tym tlem mozna ustawic niby na inny coz moze z rozowym sie uda. |
|
kamillo121 |
» 2011-10-28 12:01:39 Samo SDL jako tako nie obsługuje plików o formacie PNG, lecz dodatkowa biblioteka SDL_Image obsługuje większość popularnych formatów. Skoro usuwa kolor kluczowy i zostawia tylko jakąś część to sprawdź w programie graficznym czy przy kompresji nie zmienił się kolor. Zapis pliku png z alpha zapisuje się z reguły tak samo jak zwykły png. Masz program graficzny usuwasz tło i zapisujesz. Jeżeli chcesz uzyskać lepszą jakość to zapisuj to np w BMP, gdzie strat nie ma. Ustaw sobie kolor którego nie używasz na obrazkach i go usuwaj przy wczytywaniu. Jeżeli nic nie kombinujesz z ustawieniami buforów to na 99,9% nie jest to wina biblioteki.
|
|
mattheo Temat założony przez niniejszego użytkownika |
» 2011-10-28 13:13:30 problem rozwiazany ;D w gimpie udalo mi sie zrobic png ktorego po wczytaniu i odcieciu tla nie zostawia tego brzydkiego obrysu :D temat do zamkniecia |
|
« 1 » |