Hogyan definiálhatjuk a sprite átlátszó területeit maszkkal
- C ++
- Játékfejlesztés
Két képünk van:
forrás, fekete háttérrel:
és a maszkja fehér háttérrel:
Szükségem van:
A fekete háttér helyett átláthatóságot kapjon, hogy a sprite fekete kontúrjai esetén megjelenjenek. Mert ha egyszerűen fekete háttéren készít egy krómozott képet, akkor a körvonalak is átlátszóak lesznek. Ismeretes, hogy a CHUT-könnyebb mint a fekete kontúrok rajzolása (pl. 000000 és 000001 kontúrok), de ez nem működik, ezért a projektet egyéni spritekhez tervezzük. Az áttetszőséget pontosan meg kell adni, ahol a maszk fehér háttere egybeesik az eredeti fekete háttérével.
+ =
Nincs szükség alfacsatornára.
Az SDL könyvtárat C ++ -re használom.
________________________________________________________________________
Bár van egy feltevés:
A maszk színének: a színt el kell távolítania az egyes képpontok megfelelő képpontjának alfa-csatornájáról, de a vizsgált szoftverben látta, hogy ha a maszk nem fekete, a háttérrel és a szennyeződéssel keveredik:
A vizsgált szoftver kísérlete a rossz maszkkal:
Forrás és maszk:
UPD: Egy idő után megtudtam, milyen algoritmust használ az ilyen képek rajzolása:
Ehhez a bitmaszk algoritmust használtuk.
azaz:- Először egy bitverővel ellátott "AND" képpont-pixel-pixeles maszkot rajzolunk.
- Ezután ugyanazon a helyen a kép maga húzódik, de bitre vagy VAGY képpontról pixelre, képernyő képpontokkal
Az ilyen algoritmust a vizsgált programban használták fel, mivel a VisualBasic 6, amelyre az utóbbit írták, nem támogatta rendszeresen az alfa csatornát és átlátszó képek megjelenítését. Miért, még néhány példában és oktatóanyagban is ezt a módszert alkalmazták. A motoromban PNG képeket alkalmazok, a régieket a szürke háttérrel keverik, alfa-csatorna hozzárendelését, a maszk képpontainak és a képnek a összegétől függően.
Így lehetséges, hogy a maszkot egy fordított alfa csatornát, de ha a maszk rossz (régi motor a felhasználók gyakran nem „lusta” maszk - másolt magát a képet, csak a háttér fehér öböl), a kép áttetsző különböző szintjeit a görbe (amely feltétlenül megköveteli a megfelelő maszk használatát). Ennek eredményeképpen, amikor a képkonvertert maszkokkal készítettem a PNG-ben. mint a segédprogram, amely automatikusan "lusta" maszkot rögzít.