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