Surface verzerrt

  • Nein, automatisches Zeichnen ist aktiviert und Views hab ich erst gar keine.
    Hier ist mal der Code:

    GML-Quellcode

    1. draw_surface_part_ext(ws_field,0,0,ws_width-2,ws_height-ws_spr_caption_height-3,x+2,y+ws_spr_caption_height,1,1,-1,ws_alpha);

    Also ich benutze nur _ext wegen dem alpha ^^
    Hier mal ein Screehsot:

    Die Größe der Surface ist 1500 x 1500, es scheint daran zu liegen.
    Wenn ich nähmlich die Größe ändere (z.B. auf 800 x 800),
    dann verändert sich der Fehler...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von copyboy ()

  • Ich denke mal es liegt an der Höhenangabe des Ausschnitts, also ws_height-ws_spr_caption_height-3.
    Vielleicht hat der nicht den Wert den du wolltest, kannst du ja mal überprüfen.

    Ansonsten könnte es auch ein technisches Problem sein, eventuell zu wenig Video-Ram obwohl ich mir das nur schwer vorstellen kann, weil dadurch wahrscheinlich das surface erst garnicht erstellt würde. Und ausßerdem gehts ja mit draw_surface()

    D.h. ohne weitere angaben, z.B. auch wie du auf das Surface zeichnest, könnte es da viele Möglichkeiten geben.
  • Ich habe jetzt noch selber nichts versucht, aber ich habe ein paar mögliche Ursachen:

    - Die Surface ist noch "schmutzig" - solange du nicht einmal draw_clear(0) benutzt, passiert es gerne, dass sie sich komisch verhält, da noch alte Sachen auf ihr zu sehen sind, manchmal sogar Transparenz.
    - Du verwechselst width mit x2. Manche Funktionen arbeiten nicht mit einer Breite sondern mit eienr zweiten Koordinate. Ich bin mir hier nicht sicher, aber check das mal. Meistens führt so ein Problem aber nur zu einem Fehler von einem Pixel.
    - Für die Variablen x, y und co. beziehst du dich auf die falsche Instanz. Das würde erklären, warum nunichtmal "0,0" etwas vernünftiges bewirkt. Ein falsches with-Statement kann auch zu so etwas führen.
    - Du verschiebst die Instanzen kurzzeitig. Eher unwahrscheinlich, aber überprüf das mal. Dabei musst du bedenken, dass durch den GM bedingte Verschiebungen zwischen Step und End Step passieren (durch Kollisionen, speed oder so). Verschiebe auch besser nichts in Draw Events.
    - 1500^2 ist zu groß für den GM... Glaube ich allerdings einerseits nicht und andererseits müsste sich alles auch mit einer Surface lösen, die nur so groß ist wie mansie sieht.

    Wenn das alles nichts hilft, teste ich selber mal...


    edit:
    Ok, ich hab ein bischen die arguments durcheinander gebracht (bezüglich 0,0). Allerdings ist mir noch etwas aufgefallen: Du schreibst für color -1; Es kann sein, dass der GM so freundlich ist und dies dann normal behandelt, zur Sicherheit solltest du aber mal c_white dorthin schreiben. Die anderen Parameter sehen eigentlich sonst ok aus... Schau aber nach, ob die width udn heights wirklich unabhängig von x und y sind.
  • Ich habs jetzt herausgefunden: Die Größe der Surface muss die des Bildschirms entsprechen...
    Jetzt die Frage: Wie find ich die heraus?!?

    EDIT: @ MewX: 8o Nein, is alles gut durchdacht, -1 stimmt ja auch (es gibt ja keine Farbfehler)...

    Was jetzt? Entweder ist das ein Bug oder ich mach was falsch...
    Achja, eine Surface zu zeichnen funktioniert bei mir irgendwie nie ... ich hab mal für nen freund was gemacht und wollte irgendwie den ganzen Raum (größer als die View) bemalen und er hat das ganze verkleinert gemacht, also nur die View...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von copyboy ()