Code von DirectX Funktionen finden



  • Ich schreibe gerade eine 2d Grafikengine mit DDraw 7 und moechte eine eigene Blit Funktionen machen, weil Blt und BltFast ja mit jedem Aufruf immer die Surfaces locken. Das kostet aber Zeit, die man sich sparen kann wenn man die Funktion fuer die selbe Surface mehrmals aufruft.
    Bei dieser Engine solls dann ungefaehr so laufen:

    lpSurface->Lock
    lpSurface->Blt irgendwas
    lpSurface->Blt noch was
    [...]
    lpSurface->Unlock

    Ich hab schon eine Bltfunktion geschrieben, die aber im Vergleich zur DirectX Funktion endlos langsam ist (keine ahnung wieso; sie kopiert einfach Pixel fuer Pixel von einer zur anderen Surface)

    Koennt ihr mir sagen wie ich den Code von der in DirectDraw implentierten Funktion Blt bzw. BltFast finden kann um diese etwas abgeaendert zu uebernehmen?



  • Lern erst programmieren. Danach kannst du deine Programme optimieren.

    PS: tu dir einen Gefallen und benutze BltFast.



  • berni.l schrieb:

    Ich schreibe gerade eine 2d Grafikengine mit DDraw 7 und moechte eine eigene Blit Funktionen machen, weil Blt und BltFast ja mit jedem Aufruf immer die Surfaces locken.

    Gibt's 'nen Grund, das immer wieder so'n Scheiss gelabert wird? Das steht nicht zufällig in irgendeinem weitverbreitetem Buch o.ä.

    Bye, TGGC



  • berni.l schrieb:

    Koennt ihr mir sagen wie ich den Code von der in DirectDraw implentierten Funktion Blt bzw. BltFast finden kann um diese etwas abgeaendert zu uebernehmen?

    Du schreibst 'ne Mail an Bill Gates, er möge *schnellstmöglich* den Source von DirectX durch 'ne Sicherheitslücke in Outlook entwenden lassen. Und den von Windows Longhorn direkt dabei! 🤡 👍



  • 1. KANN ICH PROGRAMMIEREN. Vielleicht nicht so gut wie ihr, aber ich hab schon genug Spiele gemacht um eine Ahnung von Optimierung zu haben.

    2. Ich hab nur nicht viel Erfahrung mit den DX Interfaces. Ich hab gedacht dass der Code von Funktionen in igend welchen dlls oder so ausgelagert ist. Hab dabei wohl dass Bill Gates Prinzip vergessen: erst irgend etwas Fehlerhaftes programmieren und ja nicht als Opensource zur Verfuegung stellen.

    3. BltFast ist nur um 10% schneller und man kann nur komplette Surfaces in eine andere kopieren, was fuer dich als Besserwisser eigentlich nichts neues sein duerfte.

    4. Dieses Forum ist wirklich zum Vergessen. Wenn einmal ein Neuling eine Frage hat, wird er laecherlich gemacht anstatt eine Antwort zu bekommen.



  • berni.l schrieb:

    Wenn einmal ein Neuling eine Frage hat, wird er laecherlich gemacht anstatt eine Antwort zu bekommen.

    Jetzt hast du dich selbst lächerlich gemacht und Antworten hast du auch bekommen.



  • Ich hab nur nicht viel Erfahrung mit den DX Interfaces. Ich hab gedacht dass der Code von Funktionen in igend welchen dlls oder so ausgelagert ist. Hab dabei wohl dass Bill Gates Prinzip vergessen: erst irgend etwas Fehlerhaftes programmieren und ja nicht als Opensource zur Verfuegung stellen.

    Du bist lustig. Nenne mir bitte eine Grafik-API die Open Source ist. (OpenGL ist nicht Open Source auch wenn er im Namen die Bezeichnung Open trägt)

    BltFast ist nur um 10% schneller und man kann nur komplette Surfaces in eine andere kopieren, was fuer dich als Besserwisser eigentlich nichts neues sein duerfte.

    Stimmt nicht. Du kannst durch definieren der Struktur Rect nur bestimmte Bereiche in den Backbuffer kopieren.

    Du wirst auch keine Funktion schreiben können die schneller sein wird als BltFast.

    Dieses Forum ist wirklich zum Vergessen. Wenn einmal ein Neuling eine Frage hat, wird er laecherlich gemacht anstatt eine Antwort zu bekommen.

    Liegt wohl daran das wir diese These nicht mehr hören können.

    Ausserdem kommst du her als ob du dich sehr gut auskennst. Das musst du wohl. Du nimmst einfach so mal an das BltFast langsamer ist als jede Funktion die du schreiben kannst.

    PS: Schreib deine Funktion mit BltFast und dann kommst du her und wir werden dir zeigen wie du einen eigenen Clipper programmierst.



  • Stimmt nicht. Du kannst durch definieren der Struktur Rect nur bestimmte Bereiche in den Backbuffer kopieren.

    Da hast du recht. Ich meinte mann kann nicht vergroessern und verkleinern. (es gibt keine DestRect Struktur)

    Ausserdem kommst du her als ob du dich sehr gut auskennst. Das musst du wohl. Du nimmst einfach so mal an das BltFast langsamer ist als jede Funktion die du schreiben kannst.

    Es geht mir nicht darum eine Funktion zu schreiben die schneller oder besser ist sondern darum wenn ich z.B. 50 unterschiedliche Surfaces in den Backbuffer pro Frame blitte ich den BackBuffer nicht 50 mal locken und unlocken muss. Aber mit jedem Aufruf von Blt oder BltFast wird die Surface gelockt.

    Gibt es dafuer eine Loesung?

    Gruss aus Kanada (bin ein Austauschschueler)



  • berni.l schrieb:

    Aber mit jedem Aufruf von Blt oder BltFast wird die Surface gelockt.

    Lern lesen, das ist Unsinn.



  • @berni.l glaub uns. Heutige Grafikkarten müssen nicht einmal den Speicher locken. Die machen das einfach so. Würde mich nicht wundern wenn in den nächsten Versionen von DX die Lock und Unlock Funktionen nicht mehr da sind.

    cu


Anmelden zum Antworten