Surface Create X und Y Koordinate festlegen

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

  • Surface Create X und Y Koordinate festlegen

    Hallo zusammen,

    ich habe nach einiger Zeit wieder an meinem Projekt weitergearbeitet und konnte mein damaliges Problem leider immer noch nicht lösen, jedoch ist mir etwas neues aufgefallen, womit ihr mir eventuell weiterhelfen könnt.

    Ich habe für jedes Licht (farbige Punkte) eine Surface, die Surface hat immer die Breite/Höhe der derzeitigen View, jetzt ist mir aufgefallen und wie man auf dem Bild auch sehen kann, dass die Surface immer an den x0 und y0 Koordinaten erstellt wird und da auch "sieht", sie wird nur an der derzeitigen X und Y View gezeichnet. D.h. ich müsste die X und Y Koordinate er erstellenden Surface bestimmen können, aber das geht nicht und wenn ich die Surface über den ganzen Raum erstelle, werden zu viele Ressaucen verbraucht. Kann mir da irgendjemand ein anderer Lösungsvorschlag machen? :rolleyes:

    Für die bildliche Darstellung ein Foto:
    Jedes Licht hat eine Surface, die man als den weißen Rahmen und dem farbigen Punkt erkennen kann, oben links steht die derzeitige X und Y Koordinate der View.
    Bilder
    • Surf.png

      50,44 kB, 803×602, 400 mal angesehen
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Das ist ja interessant, dass hier noch niemand drauf geantwortet hat.

    ich beschäftige mich zur Zeit auch mit dem Thema Surface und stehe vor dem selben Problem. Hast du inzwischen eine lösung dafür gefunden? lg

    edit:
    laut hilfe ist die position immer links oben in der ecke.
    wenn man ein view verwendet muss man dann die differenz davon abziehen.
    jetzt hab ich kein view sondern nur einen raum mit einer auflösung von 1920x1080. würde sich die graphikkarte nicht totrechnen wenn ich ein surface in der größe festlege?


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

  • Ich versteh nicht ganz dein Problem, aber du erstellst einfach ein Surface mit einer Größe von 2x2, 4x4, 8x8, 16x16, usw. Hab mal gelesen, dass ein Surface immer diese Maße haben soll. Und dann zeichnest du dein Zeug bezogen auf den x0 und y0 vom Surface. Das Surface zeichnest du dann an der entsprechenden Stelle. Die Koordinaten werden automatisch verschoben, sie sind ja in Abhängigkeit vom Surface x und y Punkt. Also ein Surface von der Größe deines Raumes für irgendeinen kleinen Punkt ist absolut unnötig. :D
  • auf der webseite ausfürhen lässt sich das schon.

    nur kann ich diesen part hier nicht verstehen:

    Quellcode

    1. if (!surface_exists(surf)) surf = surface_create(W, H);
    2. surface_set_target(surf);
    3. draw_clear_alpha(c_white, 0);
    4. draw_rectangle(0, 0, argument0, argument1, 0);
    5. draw_set_color(c_red);
    6. draw_circle (mouse_x-argument2, mouse_y-argument3, 10, 0);
    7. draw_set_color(c_black);
    8. surface_reset_target();​



    argument0, und argument1. wo werden denn deren werte übergeben? irgendwo muss das doch vorher definiert werden.


  • Dieser Codeblock ist ein Script auf yal.cc (das Script geht von #define Scriptname bis zum nächsten #define)
    arg0 ist die Breite des Surfaces
    arg1 ist die Höhe
    arg2 ist die xPosition der oberen linken Ecke des Surfaces -> also das offset vom (0,0) Punkt des Raumes
    arg2 ist die yPosition der oberen linken Ecke des Surfaces -> also das offset vom (0,0) Punkt des Raumes

    aufgerufen wird diese Funktion im step Event des yal.cc objektes (#define step)

    GML-Quellcode

    1. #define surfUpdate(width, height, xPos, yPos)
    2. if (!surface_exists(surf)) surf = surface_create(W, H);
    3. surface_set_target(surf);
    4. draw_clear_alpha(c_white, 0);
    5. draw_rectangle(0, 0, argument0, argument1, 0);
    6. draw_set_color(c_red);
    7. draw_circle (mouse_x-argument2, mouse_y-argument3, 10, 0);
    8. draw_set_color(c_black);
    9. surface_reset_target();
    Alles anzeigen