Blitten zweier SurfaceAbschnitte



  • Hallo , ich versuch einen Hintergrund und ein Stück Grafik darauf zu blitten:

    SrcR.top = 0; SrcR.bottom = 384; SrcR.left = 0; SrcR.right = 512;
    DestR.top = 0; DestR.bottom = 768; DestR.left = 0; DestR.right = 1024;
    lpDDSPrimary->Blt(&DestR, lpDDSurface, &SrcR , DDBLT_WAIT, NULL);

    SrcR.top = 384; SrcR.bottom = 432; SrcR.left = 0; SrcR.right = 345;
    DestR.top = 30; DestR.bottom = 78; DestR.left = 605; DestR.right = 950;
    lpDDSPrimary->Blt(&DestR, lpDDSurface, &SrcR , DDBLT_KEYSRC | DDBLT_WAIT, NULL);

    Das Problem is dass die was ich als zweites blit flackert. aber der Hintergrund nicht. Liegt das an DDBL_WAIT oder was kann ich anders machen?

    MfG, Sql



  • Hi !

    Du blittest beide Surfaces auf die Primarysurface (oder Frontbuffer). Kein wunder dass es da flackert. Informier dich mal über Doublebuffering 🙂



  • Hab ich schon... und? Hintergrundbild in Front- und das sprite in Backbuffer oder was? Oder meinst ich soll ne Surface anlegen, dort mein Bild zusammenstellen und das dann gesamt auf die Primary blitten?



  • Überlegung 2 ist fast richtig. Nur du legst nen Backbuffer an. Da wird alles reingeblittet und am ende dann der Backbuffer geflippt (front mit backbuffer getauscht). Das ist die schnellste Methode.



  • Und dann in den Front und flippen. Und dann muss ich wieder in den Backbuffer schreiben, ni wahr? Ich wollt bloß mit so wenig Rechenleistung und Rumgeblitte wies geht auskommen, ich mach ein Aufbauspiel und zZ kommt da ca. alle 10 s ne Veränderung, weshalb ich halt nich unbedingt 24x in der Sekunde ein neues Bild brauch. Wenn ich was auf den Bildschirm (PrimarySurface) blitte bleibt das dann solange dort bis ich was anders mach oder muss ich für jedes Frame den Frontbuffer wieder füllen?



  • Und dann in den Front und flippen. Und dann muss ich wieder in den Backbuffer schreiben, ni wahr?

    Genau ! Du schreibst also *nie* direkt in den Frontbuffer rein.

    Ich wollt bloß mit so wenig Rechenleistung und Rumgeblitte wies geht auskommen,

    Das flippen macht dir die Performance 100% nit kaputt

    ich mach ein Aufbauspiel und zZ kommt da ca. alle 10 s ne Veränderung, weshalb ich halt nich unbedingt 24x in der Sekunde ein neues Bild brauch.

    Wenn du kein neues Bild brauchst : Nix blitten, nix flippen, nix löschen. Das Bild bleibt natürlich im Frontbuffer

    Alle Klarheiten beseitigt 😉



  • OK, danke Euch beiden, jetz komm ich weiter.
    cya!


Anmelden zum Antworten