MFC Bitmap Format



  • Moin zusammen,

    ich entwickel derzeit ein kleines Spiel unter Windows CE und verwende dazu die MFC (Spiel ist in normale Programm-Oberfläche integriert). Leider ist die Performance bisher miserabel. Nachdem ich mir das im Display-Treiber genauer angeschaut habe, habe ich entdeckt dass bei den ganzen Blits und Fill Befehlen die surfaces immer ein unterschiedliches Format haben. Damit der verwendete Grafikkontroller die ganzen Operationen aber in HW beschleunigen kann, müssen die surfaces das gleiche Format wie die primary surface (framebuffer) haben.

    Jetzt zu meiner Frage:
    Wie kann ich denn sicherstellen, dass das native RGB Format verwendet wird? Beim Anlegen der Bitmaps bzw. DCs versuche ich diese immer kompatible zum Window DC zu halten: CreateCompatible(GetDC()).


  • Mod

    Wenn Bitmaps mit LoadBitmap geladen werden, dann werden die als kompatible Bitmaps in den Speicher geladen.

    LoadBitmap creates a compatible bitmap of the display

    Welches Format haben denn, Deine Bitmaps?

    Welche Operationen laufen Dir zu langsam.
    BTW: Mit GDI Operationen hast Du natürlich unter Windows 7/Vista eine relative langsame Grafikausgabe gewählt. Warum verwendest Du kein DirectX, oder GDIPlus?



  • Danke für die schnelle Antwort. DDdraw werde ich noch einbauen. Mir gings nur grundsätzlich darum was man beachten sollte wenn man so effizient wie möglich programmieren möchte.

    Bisher lade ich die Bitmaps mit SHLoadDIBitmap(). Die Bitmaps selbst haben nun das gleiche Format wie der framebuffer. D.h. die HW-Beschleuniging funktioniert in diesem Fall.

    Muss ich denn wirklich beim Programmieren immer selbst auf das native FB-Format achten?
    Sehe ich das richtige, dass bei CreateCompatibleXXX immer der "oberste" DC angegeben werden muss?


Anmelden zum Antworten