Noviembre 19, 2015, 10:33:39 AM Ultima modificación: Noviembre 21, 2015, 06:36:01 AM por kostra
Muy buenas, a ver si alguien sabe... trato de dibujar en el evento draw, un outline del mismo sprite, pero sin usar el mismo sprite debajo más agrandado, que es lo que he encontrado buscando outline :S

Necesito que se dibuje SOLO el outline, ya que lo que trato es que el outline tenga un alpha de 1 y el sprite que estará encima un alpha de 0.4 y claro... si uso la clásica técnica, pues se ve todo alpha 1... me explico? :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Se me ocurre este método
[gml]
surface_set_target( sf );
   
    //sprite a escala
    draw_clear_alpha( 0,0 );
    draw_sprite_ext( sp0,0, 256,256, 1.1,1.1, 0,c_white,1 );
   
    //dibujar solo en la parte opaca
    draw_set_blend_mode_ext( bm_dest_alpha, bm_zero );
    draw_rectangle_color( 0,0, 512,512, c_lime,c_green,c_teal,c_aqua, false );
    draw_set_blend_mode( bm_normal );
   
    //borrar la parte interna
    draw_set_blend_mode_ext( bm_zero, bm_inv_src_alpha );
    draw_sprite( sp0,0, 256,256 );
    draw_set_blend_mode( bm_normal );
   
surface_reset_target();
[/gml]
Primero se dibuja el sprite a escala. Después se dibuja una textura o color para el borde, pero sólo sobre la parte opaca del sprite dibujado previamente. Por último se usa el sprite con tamaño normal para hacer transparente la parte interna de la superficie.
Revisa el archivo de ejemplo.

no he usado surfaces en mi vida xD he tratado de amoldarlo, pero me da error... cómo se usa?, donde, qué se edita qué no se toca?   oinnk :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Importa el archivo .gm81 para que veas cómo funciona.
Lo más complicado en ese código es el uso de los "blend modes", se podrían hacer variaciones del código con el mismo resultado.

#4 Noviembre 20, 2015, 05:09:33 PM Ultima modificación: Noviembre 20, 2015, 05:16:19 PM por kostra
no me había dado cuenta... pero de igual manera no me entero de nada, cuando se dibuja en surface las posiciones son muy raras, no entiendo nada T_T

PD: y yo me pregunto... si solo voy a poner outline a 4 diminutas instancias... no es mejor para la ram, que coloque dos sprites distintos con el draw din surfaces?... pregunto :/
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Si, sería mejor dibujar dos sprites en lugar de una superficie y un sprite.

pues gracias, finito :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]