¡Buenas! Veréis... una imagen lo explicará (!)



yo tengo un cuadrado rojo OPACO y una wea semitransparente. Entonces, en una surface, yo dibujo el cuadrado y ENCIMA dibujo la wea. Por algún motivo, al dibujar la surface obteniendo su textura y dibujándola en el mundo (con primitiva 3D, no sé si influya), esa transparencia de la wea parece que "atraviesa" el cuadrado, y puedo ver lo que hay detrás del cuadrado rojo, aún si éste debería ser opaco.

No tengo ningún draw_set_blend_mode así que no sé por qué pueda ocurrir. ¿Alguna idea?

Ni idea, pero deberías probar hacer lo mismo en 2D para saber si es que las funciones en 3D son las que estan causando ese efecto raro.

No se si estas usando primitivas, pero podes probar usando:
draw_vertex_texture_colour(x, y, xtex, ytex, col, alpha)

con el alfa a 1.



Ese es el comportamiento normal de las surfaces, para arreglarlo desactiva el canal alpha con draw_set_colour_write_enable cuando vayas a dibujar sprites con transparencia, o si necesitas partes de la surface que no sean completamente opacas ni completamente transparentes premultiplica el alpha del sprite y dibuja usando el blend mode extendido con bm_one como origen y bm_inv_src_alpha como destino.

En que orden estas dibujando las cosas? debes primero dibujar todas las cosas opacas y luego todas las transparentes en orden de la mas lejana a la cámara a la mas cercana.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.