Ergebnis 1 bis 20 von 25

Thema: [DynRPG Plugin]Blending Mode

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Wenn du Lust hast, kannst du dich hier ja nach weiteren umsehen:
    http://en.wikipedia.org/wiki/Blend_modes

    Ich benutze für meine vorbeleuchteten Map-Panoramen in Photoshop beispielsweise:
    - [Soft Light] mit Dunkelblau für nächtliches Aussehen
    - [Color Dodge] für farbige Lichtbilder
    - [Linear Light] für Schatten

    Wobei ich letztere wahrscheinlich nie als Extrabild einbinden würde.


  2. #2
    Kann es sein, dass Bilder, die zu groß sind, nach kurzer Zeit Fehler verursachen?
    Code:
    ---------------------------
    Kaze Blending
    ---------------------------
    Access violation in module 'DynBlending.dll' in with address 6630167E and offset 01206000 of type Read occured.
    ---------------------------
    OK   
    ---------------------------
    (3200x1200)
    Ich wollte mir einen Test einer Ganzbildschirmanimation etwas vereinfachen und hab
    alle Frames in das gleiche Pic getan, um sie dann per Variablen und MovePic an die
    richtige Position zu schieben, beim zweiten passiert allerdings das im Codeblock. ^-^

  3. #3
    "Sollte" nicht, kann aber sein. Habe nicht wirklich solch grossen Bilder ausprobiert.
    Ich werde mal daran schauen

  4. #4
    Jupp, gab ein Bug dabei @große Bilder.
    Sollte jetzt behoben sein

  5. #5
    Hrm, leider kein Quellcode dabei :-(

  6. #6
    Zitat Zitat von Corti Beitrag anzeigen
    Hrm, leider kein Quellcode dabei :-(
    Source
    Hoffentlich jetzt auch noch bugfrei

  7. #7
    Mir ist beim Überfliegen aufgefallen, dass du die Arrays im Destruktor nicht korrekt deallozierst:

    Code:
        ~ImageData()
        {
            delete r;
            delete g;
            delete b;
        }
    Korrekt wäre:

    Code:
        ~ImageData()
        {
            delete[] r;
            delete[] g;
            delete[] b;
        }

  8. #8
    Code:
    RPG::variables[7] = scriptLine->parameter(0);
    Wohl noch Debug-Code. Gehört dringend raus.

    Außerdem würd ich auch noch ein onInitTitleScreen machen und da die Blends löschen. Pictures können ja auch durch das Starten/Laden eines Spiels gelöscht werden!

    Und der von Kyuu angesprochene Bug gehört auch dringend gefixt da der ein Memory Leak verursacht, soweit ich weiß.

    Ach, Kazesui, Anregung: Ein Plugin um direkt 16-Bit-Bilder anzuzeigen! (Müsstest du dann halt selber laden, mit einer PNG-Lade-Bibliothek)

    Geändert von Cherry (20.08.2012 um 21:34 Uhr)

  9. #9
    Danke, gehört raus ja, und stimmt auch noch @Starten/Laden. Habe diesmal schon einiges vergessen, mist.
    Sollte natürlich auch
    Code:
    delete[]
    sein. Ist glaub ich compiler bedingt in genau diesem Fall (Habe kein leak entdeckt als ein paar tausend mal pictures erstellen und löschen lies), sollte aber trotzdem natürlich drin sein, weil man sich auf sowas nicht verlassen soll. Danke.

    Werde ich wohl zu meiner Liste hinfügen müssen @16-Bit-Bilder.

  10. #10
    Zitat Zitat von Kazesui Beitrag anzeigen
    Ist glaub ich compiler bedingt in genau diesem Fall (Habe kein leak entdeckt als ein paar tausend mal pictures erstellen und löschen lies), sollte aber trotzdem natürlich drin sein, weil man sich auf sowas nicht verlassen soll.
    Bei primitiven Datentypen wird der Speicher zwar offenbar auch mit delete freigegeben, aber - wie du selbst bemerkt hast - ist das alles andere als verlässlich und um genau zu sein sogar undefiniertes Verhalten.

    Spätestens sobald du Klassen mit RAII hast, d.h. allozierter Speicher wird in den Destruktoren wieder freigegeben, bekommst du einen Memory Leak, weil die Destruktoren nur mit delete[] aufgerufen werden.

    Problematisch kann es auch bei Operatorüberladung werden: http://www.parashift.com/c%2B%2B-faq...built-ins.html

    Geändert von Kyuu (20.08.2012 um 23:36 Uhr)

  11. #11
    Moin.

    Einfrieren bei Erase Picture. Doch kein Phänomen des Picture Pointer Patches.



    Haha, Quiz: Wie hab ich das hier gemacht? ^^

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bild4.jpg 
Hits:	106 
Größe:	209,4 KB 
ID:	17016

    Lösung:
    • Normales Bild ( 0% Transparenz ) auf id 14
    • fyr.add.png auf id 15


    Tipps:
    • Wichtig sind nicht die ids, sondern das add-Bild im Script nach dem anderen anzuzeigen

    Geändert von Corti (28.02.2013 um 18:06 Uhr)

  12. #12
    News update:
    Das Phänomen komischer Bildanzeigen hab ich in meiner Adaption des Scriptes gelöst.

    Code (Aus dem Sourcecode, den du mal veröffentlicht hast: ):
     
    bool onDrawPicture(RPG::Picture* picture)
    {
     ( ... ) 
     
            char* filename = picture->filename;
            std::string type;
            int i = -1;
            while(filename[++i] != '.'); // <--- Knackpunkt hier 
            int n = ++i + 3;
            for(; i < n; ++i)
                type += filename[i];
            if(!type.compare("add"))
            {
                active[id] = 1;
                blends[id] = new ImageData(picture);
                drawAdditive(id);
                return true;
            }
    ( ... )
     

    Dateinamen enden zumindest bei mir nicht mit ".png" sondern enthalten gar keinen Punkt wenn kein ".add" oder Ähnliches vorhanden ist. Der Screenshot oben kommt zustande wenn bei einem "non-blend"-Picture, ausserhalb des Bereiches des Dateinamens irgendwo ein Punkt gefolgt von gültigen drei Zeichen gefunden wird zB auf Index 15466 bei mir ;-)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •