Surface Leistung

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

    • Surface Leistung

      Hallo
      Ich arbeite häufig mit Surfaces für Minimaps oder fürs Interface allgemein (Da leichter zu verschieben).
      Jetzt hab ich mich aber gefragt, wenn ich jeden Step ein Surface ändere um z.B. die Minikarte aktuell zu haben,
      habe ich dann einen größeren Leistungverlust als wenn ich alles im Draw Event eines Objekts mache?

      Natürlich geht es mir dabei nicht um ein paar kleine Surfaces sondern um einige (größere).
    • Aus persönlicher Erfahrung wiegen die meisten Draw-Befehle gleich viel. Das heißt eine Surface zu zeichnen ist kein viel größerer Aufwand als eine Linie, um ein Beispiel zu nennen.

      Die Frage ist halt, ob es wirklich einen Grund für die Surface gibt. Die Idee hinter einer Surface wäre eigentlich, dass eben nicht immer jedes Element der Surface neu gezeichnet werden muss, d.h. du möchtest Draw-Befehle einsparen.
    • Lord Frostblut schrieb:

      Also bringt es mir etwas, wenn ich z.B. ein Interface habe und jeden Step die Informationen erneuere aber den Rand und alle weiteren Inhalte die sich nicht ändern nur einmal auf Surface zeichnen lasse?
      Was nur funktioniert wenn du die Informationen nicht auf das Surface zeichnest. Da der Rand usw ja nicht mehr gezeichnet wird sobald du das Surface aktualisierst. Generell sind Surfaces zu raten wenn man Darstellungen ausführen will, die ohne dem nicht gehen oder wenn man kompakt und einfach einen haufen elemente fertig platziert noch relativ herumbewegen möchte. Abzuraten ist von zu vielen surfaces da manche älteren PC's zu wenig VideoRAM haben.

      Dazu übrigensein netter Test.

      © 2008 by Teamgrill Productions
    • MasterXY schrieb:

      Dazu übrigensein netter Test.
      Die (Surface-) Skripte da sind mir ja völlig unklar. Der Vram-Test sowieso, aber auch das draw_surface_rotated. Ich wußte gar nicht, daß d3d_transform mal ganz nebenbei auch für 2D funktioniert :huh:

      Übrigens, zum Thema Minimap: Ich habe es geschafft, einiges an Performance rauszuholen mit einer transparenten Surface für die Minimap-Punkte und unterschiedlichen Refresh-Raten (je nach Bewegungstempo).
      Habe das ganze aber verworfen und nie wieder transparente Surfaces verwendet. Sind glaub ich nicht kompatibel genug.
      Spoiler anzeigen

      GML-Quellcode

      1. c_pu=make_color_rgb(192,0,192) // transparenzfarbe
      2. surface_set_target(minisu)
      3. draw_background_(bg_minimap,......) // hintergrund (Landkarte)
      4. surface_set_target(mini2su)
      5. draw_set_blend_mode(bm_subtract); draw_set_color(c_pu); draw_rectangle(0,0,128,129,0); draw_set_blend_mode(bm_normal);
      6. with (enemy) DotDraw() // draw_point, draw_sprite, bloss nicht draw_circle!
      7. surface_set_target(minisu)
      8. draw_surface(mini2su,0,0)
      9. draw_set_blend_mode(bm_subtract);draw_sprite(mask_minimap,0,0,0)draw_set_blend_mode(bm_normal) // Maske (schwarzer Kreis auf weißem Grund)
      10. draw_background(fg_minimap,0,0) // Vordergrund (Rahmen)
      11. surface_reset_target()
      Alles anzeigen

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