Surface Drawing-Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Surface Drawing-Problem

    Hallo,

    habe ein kleines Schönheitsproblem.
    Ich benutze Surfaces um meine Schatten zu erstellen.

    GML-Quellcode

    1. surface_set_target(shadow_surface);
    2. draw_sprite_ext(sPalmeShadow, 0, 0 + sprite_get_width(sprite_index) / 2 + x_offset / 10 + sin(a), 0 + sprite_get_height(sprite_index) / 2 + y_offset / 10, image_xscale, image_yscale, sin(a * 1.1), c_white, 1);
    3. draw_sprite_ext(sPalmeShadow, 1, 0 + sprite_get_width(sprite_index) / 2 + x_offset / 8 , 0 + sprite_get_height(sprite_index) / 2 + y_offset / 8 + sin(a), image_xscale, image_yscale, sin(a * 1.2), c_white, 1);
    4. draw_sprite_ext(sPalmeShadow, 2, 0 + sprite_get_width(sprite_index) / 2 + x_offset / 6 + sin(a) , 0 + sprite_get_height(sprite_index) / 2 + y_offset / 6, image_xscale, image_yscale, sin(a * 1.3), c_white, 1);
    5. draw_sprite_ext(sPalmeShadow, 3, 0 + sprite_get_width(sprite_index) / 2 + x_offset / 4 , 0 + sprite_get_height(sprite_index) / 2 + y_offset / 4 + sin(a), image_xscale, image_yscale, sin(a * 1.4), c_white, 1);
    6. draw_sprite_ext(sPalmeShadow, 4, 0 + sprite_get_width(sprite_index) / 2 + x_offset / 2 + sin(a) , 0 + sprite_get_height(sprite_index) / 2 + y_offset / 2, image_xscale, image_yscale, sin(a * 1.5), c_white, 1);
    7. draw_sprite_ext(sPalmeShadow, 5, 0 + sprite_get_width(sprite_index) / 2 + x_offset , 0 + sprite_get_height(sprite_index) / 2 + y_offset + sin(a) , image_xscale, image_yscale, sin(a * 1.6), c_white, 1);
    8. draw_sprite_ext(sPalmeShadow, 6, 0 + sprite_get_width(sprite_index) / 2 + x_offset * 2 , 0 + sprite_get_height(sprite_index) / 2 + y_offset * 2, image_xscale, image_yscale, sin(a * 1.7), c_white, 1);
    9. draw_sprite_ext(sprTrunk, 0, 0 + sprite_get_width(sprite_index) / 2 + x_offset * 2, 0 + sprite_get_height(sprite_index) / 2 + y_offset * 2, image_xscale, image_yscale, sin(a * 1.7), c_black, 1);
    10. surface_reset_target();
    11. draw_surface_ext(shadow_surface, (x - sprite_get_width(sprite_index)/2) + lengthdir_x(level, global.sun_dir), (y - sprite_get_height(sprite_index)/2) + lengthdir_y(level, global.sun_dir), 1, 1, 0, c_black, global.shadow_alpha);
    12. draw_sprite_ext(sprite_index, 0, x + x_offset / 10 + sin(a), y + y_offset / 10, image_xscale, image_yscale, sin(a * 1.1), c_white, 1);
    13. draw_sprite_ext(sprite_index, 1, x + x_offset / 8 , y + y_offset / 8 + sin(a), image_xscale, image_yscale, sin(a * 1.2), c_white, 1);
    14. draw_sprite_ext(sprite_index, 2, x + x_offset / 6 + sin(a) , y + y_offset / 6, image_xscale, image_yscale, sin(a * 1.3), c_white, 1);
    15. draw_sprite_ext(sprite_index, 3, x + x_offset / 4 , y + y_offset / 4 + sin(a), image_xscale, image_yscale, sin(a * 1.4), c_white, 1);
    16. draw_sprite_ext(sprite_index, 4, x + x_offset / 2 + sin(a) , y + y_offset / 2, image_xscale, image_yscale, sin(a * 1.5), c_white, 1);
    17. draw_sprite_ext(sprite_index, 5, x + x_offset , y + y_offset + sin(a) , image_xscale, image_yscale, sin(a * 1.6), c_white, 1);
    18. draw_sprite_ext(sprite_index, 6, x + x_offset * 2 , y + y_offset * 2, image_xscale, image_yscale, sin(a * 1.7), c_white, 1);
    Alles anzeigen


    Leider sieht das ganze aber nicht so aus wie ich es mir vorstelle, ich habe nämlich immer so einen blöden "Rahmen" um die Einzelbilder (siehe Anhang).
    Mit bm_add sieht das ganze viel zu dick aus und nicht mehr schön. Die Palme hat auch keinen halbtransparenten Rand, sondern nur harte Pixel-Kanten.

    Weiß jemand woran das liegt bzw. wie ich das wegbekomme?


    Grüße,
    Shari
    Bilder
    • example.png

      886,91 kB, 757×604, 591 mal angesehen
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Ah, das hatte ich ganz übersehen.
    Funktioniert aber trotzdem nicht..


    Es muss irgendwas mit dem Surface zu tun haben,wenn ich es ganz normal ohne Surface anzeigen lasse, dann ist der weiße Rand nicht da.
    Und es muss irgendwas mit Bewegung zu tun haben, denn ich ändere das Image_angle und die x und y Kooridnaten ständig ganz gering.

    Die Lösung war, bevor die Grafiken gedrawed werden, folgende Einstellungen zu treffen:

    GML-Quellcode

    1. draw_clear_alpha(c_black,0);
    2. draw_set_blend_mode_ext(bm_one, bm_inv_src_alpha);

    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Sharivari ()