GMeffect

    • Dll

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

    • Nach dem Reinfall von neulich, habe ich mich erst mal mit was anderem beschäftigt. Ich wollte mich schon seit längerem mal mit der GMAPI vertraut machen. Die GMAPI erlaubt es einem unter anderem Ressourcen aus dem Speicher des GMs raus zu fischen, und natürlich auch andersherum.
      In diesem Fall habe ich mir eine DLL gebastelt, die es ermöglicht Backgrounds zu verunstalten. Damit das ganze ich in Unmengen an Text ertrinkt, ein Screenshot des Beispieles (zeigt alle Effekte und Transformationen, die man mit meiner DLL auf Backgrounds anwenden kann)




      Besonders stolz bin ich auf die Einfachheit, mit der diese DLL verwendet wird. Dies wird mir durch die GMAPI ermöglicht.

      Zb um einem Bild einen Sepiaeffekt zu verleihen, reicht der Aufruf der Funktion

      Quellcode

      1. background_effect_sepia( backgroundid, depth);

      und schon ist der angegebene Background Sepiafarbend.

      Sonderliche viel gibt es nicht weiteres zu sagen.
      Weiter Versionen werden sicherlich folgen. Ich dachte dabei an zusammenfügen von 2 oder mehreren Backgrounds. Da habe ich auch schon 5-6 Methoden im Hinterkopf. Zudem würde ich mich sehr über Vorschläge für zukünftige Versionen freuen.

      Ein paar Bugs gibt es aber leider schon im Moment:
      • Total unerklärlicher weise, fehlen manchmal Teile eines transformierten Backgrounds. Dies geschieht aber nur mit dem GM7.
      • Die Performance reicht im Moment nicht für realtime Effekte. Ich werde mich dem Problem so bald wie möglich annehmen.
      • Der Alphakanal geht bei den Effekten und Transformationen verloren. Momentan sehe ich keine direkte Chance da was zu machen. Ich werde mich damit auf jeden Fall auseinandersetzen
      • Sprites und Surfaces fehlen. Im Moment gehen nur Backgrounds. Dies hat einfache gründe: ich bin noch nicht so weit gekommen, Sprites haben eigentlich immer transparente Bereiche und Surfaces werden oft für realtime verwendet. Zudem weiß ich im Moment noch nicht genau, wie ich die schnell vom GM entlocken soll. Das lesen und schreiben der Surfaces aus dem GM wäre deutlich langsamer als es die Backgrounds schon sind.
      Aber sonst steht der Nutzung nichts im Wege :P

      An dieser Stelle will ich dann auch noch mal Bl@cksp@rk danken, der mir beim Compilern geholfen hat.

      Download 0.1 (gm6, gm7, gm8, dll)

      Credits und blabla: nicht nötig, aber gerne.

      MfG SDX

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

    • Sieht ganz gut aus. Und diesmal geht es sogar auf Anhieb xD
      Die Effekte sehen nicht schlecht aus. :thumbsup:
      Es ist zwar nicht extrem schnell aber auf alle fälle schneller als wenn man es im GM machen würde und alles würde galub auch nur sehr schwer gehen.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Nice 1 :D
      Mit der GMAPI kann man echt tolle DInge anstellen, wenn man sich mal dahinterklemmt :D
      Darf ich fragen, wie dus gelöst hast? Greifst du direkt auf den Textur-buffer zu und wendest die Effekte manuell an?
      Woher haste die ganzen Effekt-Algorythmen her?
      Die wohl schnellste Möglichkeit wäre, über Directx Pixel-Shader(HLSL) zu erstellen und laufen zu lassen, damit wäre eine enorme Performance möglich.
      Wenn man mal den ganzen Konfigurationskram hinter sich hat, ist das ganze halb so schwer(HLSL ist Syntaxmässig sehr ähnlich mit C).
      "das war meine letzte flamewar PM an dich ."
    • Diese DLL war von Anfang an nicht für relatime Effekte gedacht. Daher habe ich mich auch nur für das erstbeste für die selbigen Effekte gewählt. (CBitmapEx)


      Auf die Anwendung der Effekte bin ich nicht sonderlich Stolz, um ehrlich zu sein. Zuerst exportiere ich die GM Ressource, lade sie in CBitmapEx, wende die Effekte an und mache ich das ganze wieder rückwärts.
      Mir wäre es ehrlich auch viel lieber, wenn ich die Effekte direkt auf den Buffer anwenden könnte.

      Und ja, die GMAPI ist wirklich toll :P

      EDIT: ich dachte ebens daran: man könnte, für den fall, dass ich nicht umsteigen will, eine eigene "Gm resource" machen. Mit der GMAPI ist dies auch nicht wirklich ein Problem. Da wäre mir der sehr performancefressende schritt von CBitmapEx zu einem GMbackground erspart. Diese Resource könnte man dann auch mit allem funktionen die man von einer GM-Resource erwartet. (dann auch inklusive draw Funktionen)

      MfG SDX

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