Verfahren gefragt



  • Hi

    Ich programmiere eine Art "Mortal Combat" unter Windows. Da ich die Bewegungen von "echten" Personen digitalisiert, ausgeschnitten und hintereinander in Bitmaps platziert habe, sind diese Animationssets wirklich extrem groß und d.h. wird meine DDraw Anwendung immer langsamer und langsamer und kackt einfach total ab.

    1. Wäre es warscheinlich gleich besser auf Direct3D umzusteigen?
    2. Soll ich die Anis vielleicht als AVI speichern und dann mit integrierter Video wiedergabe (die es in DX gibt?) abspielen?

    Vielen Dank
    Gunter



    1. Ja, auf jeden Fall.
    2. Unklug. Arbeite mit D3D, dann kannst du unproblematisch auch jpg- bzw. png-Dateien laden und der speicherverbrauch ist net so hoch.

    dass deine anwendung abkackt kann auch an schlechten speichermanagement liegen oder an anderen unoptimierten codestellen.

    mfg
    #C



  • der speicherverbrauch wird sich durch die verwendung von D3D wohl nicht gewaltig ändern.
    duch die hw unterstützung vermutlich die speed beim rendern und das wars dann auch schon.

    generell wür dich aber d3d empfehlen



  • naja mit speicherverbrauch meinte ich ja eher die platte.. ^^

    also generell würd ich sagen dass du eher durch schlechten code das ruckeln auslöst



  • Ok, ich hab mich jetzt ein bisschen in die Darstellung von 2D in 3D umgebungen eingelesen und entgegen aller Erwartungen ist das ja ziemlich einfach zu realisieren.

    Eine kleine Frage noch:
    Ich lese immer "D3DXCreateTextureFromFileEx" - das kann ich aber nicht verwenden.
    Was ist die Effizienteste Methode, z.B. ein JPG-Ani-Sequenz in den Speicher zu laden und dann per Offset die Frames als Textur (eventuell mit "D3DXCreateTextureFromFileInMemoryEx" ?) zu laden?



  • GunterVonHagens schrieb:

    Ich lese immer "D3DXCreateTextureFromFileEx" - das kann ich aber nicht verwenden.

    Warum nicht?

    GunterVonHagens schrieb:

    Was ist die Effizienteste Methode, z.B. ein JPG-Ani-Sequenz in den Speicher zu laden und dann per Offset die Frames als Textur (eventuell mit "D3DXCreateTextureFromFileInMemoryEx" ?) zu laden?

    Les' Dir das bitte nochmal durch!! Wo ist denn da die Frage?? 😕



  • Warum nicht?

    Weil ich die kompletten Animationen bestehend aus hintereinander gereihten Frames nicht auf einmal als Texturen laden kann. Die Ani-Frames für einen Charakter sind schon einige Megabyte groß - dies multipliziert sich mit der Anzahl der Charakter im Spiel und schwup bin ich auf einigen zig MB, die ich nicht alle auf einmal in einer Textur halten kann. Außerdem gibts bei Texturen diverse Höhe/Breite Beschränkung (wo zwar EIN Frame reinpasst, aber kein 1900x200 großes Set an Frames).

    Wo ist denn da die Frage??

    🙂 Naja, wie ich das am besten alles anstellen soll 😕
    Also wie ich aus so einem Bitmap immer per Offset ein einzelnes Frame rauskrieg und in eine Textur rein krieg.
    Ich hätte mir überlegt, bei 3DXCreateTextureFromFileInMemoryEx den pSrcData Pointer um n*sizeof(einzelframe in bytes) anzugeben, wobei n der FrameIndex ist.
    Aber wie krieg ich überhaupt den pSrcData z.B. aus einem HBITMAP ?


  • Mod

    GunterVonHagens schrieb:

    Ich programmiere eine Art "Mortal Combat" unter Windows. Da ich die Bewegungen von "echten" Personen digitalisiert, ausgeschnitten und hintereinander in Bitmaps platziert habe, sind diese Animationssets wirklich extrem groß und d.h. wird meine DDraw Anwendung immer langsamer und langsamer und kackt einfach total ab.

    von wieviel MB sprichst du und wodurch kommt das, dass es mit der zeit langsammer wird bzw abkackt?
    solange diese fragen nicht eindeutig geklärt sind, kann dir genau das selbe mit d3d oder sonst irgend einer bei den haaren hergezogenen lösung passieren!
    (man kann probleme schlecht umgehen, wenn man nicht weiß was sie sind;D)

    rapso->greets();


Anmelden zum Antworten