[DirectX] Hintergrund rendern?



  • HallO!

    Sitze gerade an einem 2D-Spiel. Wenn ich keinen Hintergrund zeichne ist die Framerate im Vollbild so bei 80fps, sobald ich aber den Hintergrund male liegt sie bei 30fps. Woran liegt das?

    Ich male einfach zwei große Dreiecke aus transformierten vertices aus dem Systemspeicher (vertexbuffer lohnt sich glaub ich nicht für 4 vertizes) über den gesamten Bildschirm und überziehe sie mit einer Textur.



  • Welche Grafikkarte benutzt Du?
    Welche Auflösung, wie viele Bits pro Pixel?

    Nehmen wir mal an, die Auflösung ist 1024x768 bei 32 Bits pro Pixel.
    Wenn Du Deine 80 Frames pro Sekunde behalten willst, ist dafür eine Bandbreite von 240 MB pro Sekunde (1024 * 768 * 4 (Bytes pro Pixel) * 80) erforderlich.
    Das ist eigentlich nicht viel, aber wenn Du eine uralte Grafikkarte oder einen schlechten ins Mainboard integrierten Grafikchip hast, könnte es vielleicht ein Problem sein.

    Wenn die Grafikkarte zudem wenig eigenen Speicher hat, verdrängt das Hintergrundbild vielleicht auch andere wichtige Bildelemente (z.B. Sprites), die dann wieder neu reingeladen werden müssen.

    Edit:
    Ich nehme mal an, dass Du nicht den Fehler machst, das Hintergrundbild in jedem Frame neu aus der Datei zu laden (das gab's nämlich hier schon oft ;)).



  • hm... so hab ich noch nicht drüber nachgedacht...

    also, ich lad das bild nich jeden frame neu 🙂

    hab P3 500Mhz, Ati XPert99 oder son mist-teil 🙂

    Aber sie malt so an die 1000 3232er Dreiecke ohne probleme ganz locker bei 80fps, auch aus dem systemspeicher.
    das sind bpp
    1024000
    Bei 800*600pixeln hat das Hintergrundbild dann bpp*480000, also viel weniger...
    Die Karte hat 32MB speicher, die textur ist als bitmap 1,4MB groß, also so viel vergdrängen kann sie nicht...

    Und ausserdem: Irgendwie muss es doch funktionieren, dass ich schnelle Hintergrundbilder malen kann, andere Spiele machen das ja bestimmt auch...

    Maxi



  • Maxi schrieb:

    ..Aber sie malt so an die 1000 32*32er Dreiecke ohne probleme ganz locker bei 80fps...

    Wo liegt dann das Problem?



  • das problem liegt darin, dass sie den hintergrund nicht richtig schnell zeichnen kann.



  • Dann stell den Hintergrund aus 32*24 Kacheln dar, die jeweils 32*32 gross sind.

    Bye, TGGC



  • hm, gute idee 😉
    hätt ich ja auch selbst drauf kommen können



  • Maxi schrieb:

    hm, gute idee 😉
    hätt ich ja auch selbst drauf kommen können

    Definitiv.

    Bye, TGGC



  • ...ich lad das bild nich jeden frame neu

    Von wo? Wenn du das Bild bei jedem Frame neu von der Festplatte lädst, mußt du dich nit wundern!



  • Er sagt ja dass er das Bild nicht jeden Frame neu ladet 🤡


Anmelden zum Antworten