Autor Wątek: Allegro, błąd przy przezroczystości...  (Przeczytany 2173 razy)

Offline Ju1ian

  • Użytkownik

# Czerwiec 04, 2008, 22:20:16
Witam! Tworzę sobię grę, mam kilka sprajtów z przezroczystością tzn. ten kolor różowy, wszystko działa jak powinno. Dzisiaj chciałem umieścić nowego sprajta: masked_blit( kolce, bufor, 0,0, kolce_x-scrolling_x, kolce_y, kolce->w, kolce->h);
Tło tej bitmapy jest różowe (#ff00ff), a Allegro nie bierze tego jako przezroczystość. Z dokumentacji wynika, że ta komenda jest do właśnie tej rzeczy. W ogóle nie wiem jak to się mogło stać! Z góry dziękuję za pomoc.

Offline Mr. Spam

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

Offline Kosai_

  • Użytkownik
    • devlog

# Czerwiec 04, 2008, 22:27:09
void masked_blit(BITMAP *source, BITMAP *dest, int source_x, int source_y, int dest_x, int dest_y, int width, int height);

Like blit(), but skips transparent pixels, which are marked by a zero in 256-color modes or bright pink for truecolor data (maximum red and blue, zero green), and requires the source and destination bitmaps to be of the same color depth. The source and destination regions must not overlap.
Warning: if the hardware acceleration flag is not set, masked_blit() will not work correctly when used with a source image in system or video memory so the latter must be a memory bitmap.
^ fragmenty dokumentacji
może nie pracujesz w 16 bitowych kolorach
albo
bitmapy źródła i celu nie mają tej samej głębi kolorów
albo
nie masz ustawionego "hardware acceleration"

Offline Kenji

  • Użytkownik

# Czerwiec 05, 2008, 21:56:16
Jeśli pracujesz na 32bitach to polecam przeczytać http://forum.warsztat.gd/index.php/topic,1585.0.html temat na tym forum. Poza tym raczej nie zdarzało mi się by na innych głębiach kolor #ff00ff był nieprzeźroczysty, ale zawsze gdy zmieniłem na 32bity to widać było różowy...
Ale skoro piszesz, że inne bitmapy są przeźroczyste to może być to co mówi kosiak, a mianowicie przypuszczam, iż coś jest z tą bitmapą kolce.

Jednak polecam poczytać o kanale alpha

Offline Ju1ian

  • Użytkownik

# Czerwiec 06, 2008, 14:11:40
Mam ustawione 16-bitów i wszystkie bitmapy wyświetlają się dobrze tym samy sposobem tylko ta nie. Za chwilę sobie o tym poczytam.
I wyświetlam pliki bmp, więc kanał alpha nie ma z tym nic wspólnego.
« Ostatnia zmiana: Czerwiec 06, 2008, 14:16:33 wysłana przez Ju1ian »

Offline Kosai_

  • Użytkownik
    • devlog

# Czerwiec 06, 2008, 15:38:43
może sprawdź jeszcze raz czy to na pewno jest ff00ff, może gdzieś zły kolor zaznaczyłeś
i sprawdź głębię bitów tej bitmapy

Offline Ju1ian

  • Użytkownik

# Czerwiec 06, 2008, 17:24:13
Głębia to 16 bitów, mam tak ustawione. Co do bitmapy: normalnie legalnie otwieram painta, zaznaczam kolor RGB 255,0,255 i wypełniam nim tło. Zapisuję, otwieram grę, a tam... ...nic się nie zmieniło ;/ Ciągle widać tło.

Offline Kenji

  • Użytkownik

# Czerwiec 06, 2008, 18:04:03
a spróbuj ustawić głębie na 24 bity... Ale jak mówisz, że inne są przeźroczyste to zmiana głębi raczej nie pomoże, aczkolwiek spróbować nie zaszkodzi. Może przed załadowaniem obrazka do bitmapy spróbuj ją najpierw wyczyścić clear_to_color(kolce,makecol(255,0,255)), nie wiem czy pomoże ale nie zaszkodzi spróbować.

Offline Kosai_

  • Użytkownik
    • devlog

# Czerwiec 06, 2008, 18:29:17
spróbuj inną bmapę zamiast kolców wyświetlić i zdaj raport ;)

Offline Ju1ian

  • Użytkownik

# Czerwiec 06, 2008, 19:46:53
Wszystkie wasze sposoby zawiodły ;/ Ale kosiak, wyswietliłem inną bitmapę i wyświetliło dobrze!!
EDIT:
Zrobiłem nową bitmapę i teraz jest dobrze... Nie wiem jakim cudem tamta nie działała ;/
« Ostatnia zmiana: Czerwiec 06, 2008, 19:52:34 wysłana przez Ju1ian »