Autor Wątek: [allegro] przezroczyste tlo w bitmapie?  (Przeczytany 4728 razy)

Offline wrobelbiz

  • Użytkownik

# Grudzień 19, 2007, 21:45:39
Witam.

Napotkałem kolejny problem, mianowicie mam bitmapę 5x5 z obrazkiem jabłka  :P, tylko że chciałbym,
żeby tła jabłka (czarnego koloru) nie było widac, tzn. żeby był przeźroczysty.

W załączniku jest screen z gry.


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

FREQUENT

  • Gość
# Grudzień 19, 2007, 21:58:42
A poczytaj może o kluczowaniu kolorów. W necie na ten temat jest mnóstwo niestety.

Offline Grelo

  • Użytkownik

# Grudzień 19, 2007, 22:00:02
Ja tam z allegro nie korzystałem nigdy ale IMO rozwiązania są 2:
  1) zastosować kluczowanie kolorów (color-keying) które spowoduje , że nie będą rysowane pixele o danym kolorze, ale nie wiem jak to  zrobić w Allegro;
  2) zrobić obrazek jabłka z przeźroczystym tłem w formacie PNG

Na przyszłość radze trochę poszukać zanim napiszesz na forum, bo ten temat może trafić w wiadome miejsce.

Życzę powodzenia przy pisaniu gry ;D

Offline Oti

  • Użytkownik

# Grudzień 19, 2007, 22:24:35
Różowe(255,0,255) tło i draw sprite
(-,-)
>.<

Offline Moriturius

  • Użytkownik

# Grudzień 20, 2007, 12:42:34
(255,0,255)

Ten kolor zawsze mnie przerażał... Dlatego nie korzystam z Allegro ;)

Offline wrobelbiz

  • Użytkownik

# Grudzień 20, 2007, 16:02:07
Dzięki za odpowiedzi, miałem zrobione masked_blit ale nie wiedziałem jakim kolorem ma byc zrobione tło, działa, jeszcze raz wielkie dzięki!

Robiąc mały offtopic chciałbym się was spytac jak można zrobic mapę gry, by była wczytywana z osobnego pliku.
Ja to widzę tak, że mam 1 mapę, na której jest wszystko narysowane, i która jest wyświetlana na ekranie, a druga mapa
odpowiada za kolizję, nie widac jej w grze ale komputer ją czyta.

W jednej grze MMORPG widziałem, że mapa jest w 1 pliku .amd i tam jest tak wszystko zapisane,
czy w allegro można zastosowac coś podobnego?

Offline S.Producer

  • Użytkownik

# Grudzień 20, 2007, 16:47:19
Tak, możesz załadować maskę kolizji do zmiennej wskaźnikowej typu BITMAP i potem odczytywać kolory pikseli funkcją getpixel32. Nie musisz jej wyświetlać na ekranie.

Offline wrobelbiz

  • Użytkownik

# Grudzień 20, 2007, 17:21:07
Tylko chciałbym żeby ta mapa była np. 10000 x 10000 pikseli. Co wtedy z widocznością mapy?

Da się jakoś w programie podzielić mapę na kilkaset części, w których 1 część to kwadrat 10x10 pikseli?
Wtedy problem z widocznością mapy byłby rozwiązany, bo bym pokazywał tyle tych części, ile się zmieści na ekranie.


P.S. Czy te części o które mi chodzi nazywają się kafelki??

Offline S.Producer

  • Użytkownik

# Grudzień 20, 2007, 17:27:33
W masked_blit wpisujesz przecież jaki kawałek mapy, jaki ma być wyświetlony, czyli np. (camx, camy, 800, 600) gdzie (camx, camy) to jakaś pozycja kamery, wtedy nie musisz przejmować się wielkością. Poczytaj tutorial na ten temat, bo zapomniałem, które wartości gdzie się wpisywało, a nie chce mi się jeszcze odkopywać źródeł Hackwarz :P.

Offline RedHot

  • Użytkownik

# Grudzień 21, 2007, 15:00:58
Użyj google , czytaj tutoriale =.= To wszystko to podstawy , które łatwo zrobić w allegro i są wszędzie bardzo dobrze opisane. Znajdź sobie jakiś fajny tutek i jechane ..... acha i RTFM >:{

Offline Charibo

  • Redaktor

# Grudzień 21, 2007, 18:50:23
Cytuj
Tylko chciałbym żeby ta mapa była np. 10000 x 10000 pikseli.
Policzmy: 10000 * 10000 * 32(bpp) / 1024 / 1024 = ~3051MB ;)

Offline wrobelbiz

  • Użytkownik

# Grudzień 21, 2007, 22:13:30
Jakiś mały błąd Ci się wkradł, bo obrazek 10000x10000 zajmuje ponad 286 MB robiony w photoshopie, a jako .png nie przekracza 500 KB (chodzi mi tu o cały obrazek w kolorze czerwonym - dla przykładu).

Offline Kurak

  • Użytkownik

# Grudzień 21, 2007, 22:30:31
Zauważ, że PNG pozwala na kompresję (w tym przypadku kompresję bardzo dobrą, ze względu na jednolity kolor całości). A w pamięci jakoś trzymać obrazek trzeba :P

@down - właśnie to chciałem powiedzieć :)
« Ostatnia zmiana: Grudzień 21, 2007, 22:33:29 wysłana przez Kurak »

Offline Kot

  • Użytkownik

# Grudzień 21, 2007, 22:31:16
Charibo: Nie MB tylko Mb.
wrobelbiz: No niestety jak ładujesz png do pamięci i chcesz go wyświetlać to musi być zdekompresowany, czyli zajmuje pełne wysokość*szerokość*bpp/8 bajtów.

Offline wrobelbiz

  • Użytkownik

# Grudzień 22, 2007, 10:21:40
Aha.

A jak to jest zrobione w grach MMORPG?
W nich mapy są przecież o wiele większe niż te 10000x10000.