Surfaces und der Grafikspeicher

  • GM 6

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

  • Surfaces und der Grafikspeicher

    Hey,
    Hab ein Problem mit Surfaces. Das Problem ist wie folgt. Ich habe ein Objekt, welches auf eine Oberfläche(surface) einen Hintergrund (aber mit "draw_sprite_tiled") und darüber ein transparentes Sprite zeichnet. Davon wird dann ein Screenshot gemacht und als neues Sprite verwendet. Somit erzeuge ich eine zufällige Landschaft, die mit einer Textur versehen wird (siehe Worms).
    Eigentlich klappt alles so, wie es klappen soll (siehe Bild unten). Jedoch gibt es ein gravierendes Problem. Wenn ich ein Spiel spiele - egal welches (vorhin war es Schlacht um Mittelerde) - und dann mein Spiel starte, dann funktioniert das mit den Surfaces nicht mehr. Oder es funktioniert "draw_sprite_tiled" nicht mehr... oder was auch immer (siehe Bild oben). Falls es an den Surfaces liegt, dann frag ich mich, wie ich das ändern kann (benutze vorher auch immer "draw_clear"). Kann es sein, dass der Grafikspeicher noch "voll" ist? Oder wodran könnte es liegen?
    Das Problem beseitigt sich an sonsten erst nach einem Neustart...
    Ich hoffe es kann mir jemand helfen.
    Bilder
    • problem.jpg

      60,86 kB, 323×506, 276 mal angesehen
  • Mit welcher Farbe machst du das draw_clear? Alternativ kannst du mal draw_rectangle(x1,y1,x2,y2,outline) mit der Größe deines Surfaces ausprobieren.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Ich benutze schwarz. Jede andere Farbe funktionier jedoch auch nicht. Ebenfalls funktioniert es nicht mit draw_rectangle. Am Befehl draw_sprite_tiled dürfte es auch nicht scheitern, da er, wenn ich ihn normal benutze (also nicht auf eine surface zeichnen lasse) funktioniert.
  • Aus der Hilfe: Surfaces
    Wegen der Geschwindigkeit werden Oberflächen nur im Video-RAM gespeichert. Aus diesem Grund kann es passieren, dass sie verloren gehen, wenn z.B. die Auflösung geändert wird oder der Bildschirmschoner gestartet wird.

    Das ist schon alles, die Surface/das Sprite (so wie es aussieht) wird auch gelöscht, wenn du ein ganz normales GM-Spiel beendest (oder zumindest bei mir). Ich löse das Problem jetzt, indem ich die Surface einfach nochmal erstelle, das ist zwar umständlich, aber besser als ein hässlicher Fehler. ;)