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:

Hogyan definiálhatjuk a sprite átlátszó területeit maszkkal

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.