Benutzer mit den meisten Antworten
GDI Ressourcen

Frage
-
Hallo Forum
Ich hab zwar (fast) mein ganzes Leben lang immer GDI Ressourcen verwendet, aber irgendwie nie so ganz die Frage nach dem CPU-Ressourcenverbrauch gestellt.
Daher die konkreten Fragen:
Was macht Windows bei einem "CreateFont"? Wieviel Rechenleistung kostet dieser Befehl? Ist es fahrlässig, den Zeichensatz bei jedem OnPaint (o.ä.) wieder neu zu erstellen?
Was macht Windows bei einem CreateCompatibleDC? Ist es fahrlässig, einen Memory-DC bei jedem Zeichenaufruf (wenn man z.B. in den Memory-DC zeichnet und dann alles gemeinsam über BitBlt auf den Schirm kopiert) neu zu erstellen? (An dieser Stelle frage ich nicht, ob man das zugeordnete CBitMap Objekt immer wieder neu erstellen kann .. ich tu's nicht).
Gibt es Dinge, die viel Zeit kosten, an die man normalerweise gar nicht denkt?
Parallel dazu die Frage:
Wenn ich ein Kamerasignal mit zusätzlichen Daten und Zeichnungen aufschmücken möchte und dies OHNE FLACKERN auf den Bildschirm (FullScreen) bringen....wie macht man das elegant (ich denke da an Hardwareunterstützung)?
Grüße
FireHeart
Antworten
-
Deleted
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Februar 2017 10:05
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 2. März 2017 15:01
Freitag, 10. Februar 2017 20:36 -
Deleted
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 20. Februar 2017 11:32
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 2. März 2017 15:02
Mittwoch, 15. Februar 2017 20:33
Alle Antworten
-
Hallo FireHeart,
Was macht Windows bei einem CreateCompatibleDC? Ist es fahrlässig, einen Memory-DC bei jedem Zeichenaufruf (wenn man z.B. in den Memory-DC zeichnet und dann alles gemeinsam über BitBlt auf den Schirm kopiert) neu zu erstellen?
Ich bin auf einen aufschlussreichen Artikel gestoßen und ich hoffe, dass er Dir weiterhelfen wird:
Guide to Win32 Memory DCGruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
zunächst mal "wow", das ist eine wirklich ausführliche Abhandlung des Themas ... Danke!
Ich sehe schon, da gibt's für mich einiges zum Lesen und Nachdenken. Ich hatte ja bisher immer nur mit MFC gearbeitet und dort ist alles schön in Klassen gekapselt. Wenn ich also in der OnPaint Routine ein CFont Objekt lokal erstelle und dann verwende, dann wird wohl der Destruktor des CFont Elements am Ende der Routine auch ein DeleteObject ausführen. Was macht Windows eigentlich bei einem CreateObject wirklich? Es wird ja wohl nicht tausende kleine Bitmaps mit den einzelnen Buchstaben anlegen, oder?
Grüße
FireHeart
-
Was macht Windows bei einem CreateCompatibleDC? Ist es fahrlässig, einen Memory-DC bei jedem Zeichenaufruf (wenn man z.B. in den Memory-DC zeichnet und dann alles gemeinsam über BitBlt auf den Schirm kopiert) neu zu erstellen? (An dieser Stelle frage ich nicht, ob man das zugeordnete CBitMap Objekt immer wieder neu erstellen kann .. ich tu's nicht).
- Gruß Florian
-
Hallo internal access 54,
Der wirklich aufwendige Befehl ist allerdings BitBlt, da dieser ja die gesamten Pixel kopiert, was je nach CPU mehr oder weniger Zeit kostet. Daher ist für hohe Frameraten auch eher DirectX zu empfehlen. (für Videos ohnehin Media Foundation, um diesen ganzen GDI-Bereich zu umgehen)
Inwiefern könnte DirectX, für die relativ simple Anforderung, hier, in Bezug auf die Framerate, von Nutzen sein und von welchen "hohen" Frameraten (siehe dazu auch meine vorherige Antwort) reden wir hier?
Anders gesagt, ich verstehe die Kritik an BitBlt nicht, die Dauer erscheint mir doch eher vernachlässigbar.
- Gruß Florian