Skocz do zawartości

Surface - blend mode i alpha


Rekomendowane odpowiedzi

Witam,

 

Mam surface który wypełniony jest na czarno z określonym alpha. Następnie rysuję na nim sprite'y świateł o określonym kolorze używając bm_add:

 

 

GML
// STEP

surface_set_target(global.Light);

 

if ( Outdoor )

{

draw_clear_alpha(c_black,Alpha);

draw_set_blend_mode(bm_add);

 

draw_sprite_ext(sLightBulb1,0,oPlayer.x-view_xview[0],oPlayer.y-view_yview[0],1,1,0,c_white,1);

if ( global.DayTime == dtNight && oPlayer.WeaponSeathed ) draw_sprite_ext(sLightBulb3,0,oPlayer.x-view_xview[0],oPlayer.y-view_yview[0],2,2,oPlayer.Direction,c_orange,1);

 

 

with ( oFire ) draw_sprite_ext(sLightBulb1,0,x-view_xview[0],y-view_yview[0],1,1,0,c_white,1);

}

 

draw_set_alpha(1);

 

draw_set_blend_mode(bm_normal);

surface_reset_target();

 

// DRAW

draw_set_blend_mode_ext(bm_zero,bm_src_color);

draw_surface(global.Light,view_xview[0],view_yview[0]);

draw_set_blend_mode(bm_normal);

 

W rezultacie otrzymuję czarny surface bez uwzglednienia Alpha (czyli z alpha = 1), oraz sprity świateł o określonym kolorze które akurat rysują się bardzo fajnie.

Problemem jest draw_set_blend_mode_ext(bm_zero,bm_src_color), które tak jakby w ogóle nie brało pod uwagę kanału alpha. Nie znam się na tych trybach za bardzo, sposób ten znalazłem na forum yoyogames i nie wiem za bardzo jak to naprawić.

 

Z góry dzięki, pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...