3 Stimmen

Das Geheimnis der GDI-Beschleunigung von Windows 7: Kann man sie programmatisch aktivieren? Ja, das können wir (irgendwie)! Aber wie?

Hinweis: Dies könnte scheinen sieht zunächst wie eine Superuser-Frage aus, aber lesen Sie sie bitte vollständig durch - es ist eine Programmierfrage.


だから Sie haben die GDI-Beschleunigung aus Windows 7 entfernt. und jetzt sehen die Animationen des klassischen Themas grauenhaft aus. Und da es sich um eine grundlegende Designänderung handelt, gibt es keine Möglichkeit, dies zu beheben, richtig?

Falsch!

Ich war heute wirklich überrascht, als ich zur klassischen Ansicht wechselte (wodurch Aero deaktiviert wurde), während der VLC Media Player lief. Normalerweise sehen die Animationen zum Maximieren/Minimieren schrecklich aus (sie werden kaum angezeigt), aber während VLC lief, waren die Animationen perfekt, genau wie unter XP ! Sobald ich VLC geschlossen habe, wurden sie wieder schrecklich. (Sie waren besser, wenn Medien abgespielt wurden, als wenn der Player im Leerlauf war).

Ich hatte das schon einmal reproduziert, als ich ein 3D-Spiel gestartet hatte und feststellte, dass sich die Animationen verbessert hatten, aber ich hatte angenommen, dass es sich um ein DirectX-bezogenes Problem handelte. Ich hatte versucht, herauszufinden, welche Funktionsaufrufe die Verbesserung verursacht hatten, aber ohne Erfolg. Deshalb war ich heute sehr überrascht, als ich das gleiche Verhalten bei VLC feststellte, denn es war no Video abspielen, nur Audio (nicht einmal Visualisierungen!) - und dennoch verbesserte die Wiedergabe von Audio meine GDI-Grafikleistung, was mich zu der Annahme brachte, dass Windows 7 vielleicht doch eine Art GDI-Beschleunigung hat. (?)

Für den Fall, dass dies einen Unterschied macht, ist meine Grafikkarte eine NVIDIA GT 330M, und PowerMizer ist ausgeschaltet. Ich habe kontrolliert für jede Ich kann mir keine andere Variable vorstellen, außer ob VLC läuft oder nicht, also kann ich so ziemlich alles ausschließen, was mit den Eigenschaften der Grafikkarte zu tun hat.


Und nun zu meiner Frage:

Hat jemand eine Idee, welche API-Aufrufe diese Verbesserung verursachen könnten, und ob sie tatsächlich mit Grafiken verbunden sind oder nicht?

Ich habe versucht, ein Programm zu erstellen, das die IDirectDraw::CreateSurface und läuft einfach im Hintergrund (in der Hoffnung, dass es dasselbe tut wie mein 3D-Spiel), aber nein; es gab keinen Unterschied. Ich bin mir nicht einmal sicher, ob es ein grafikbezogener API-Aufruf ist, der dies verursacht, da, wie ich schon sagte, VLC Musik und kein Video abspielte. Es ist mir ein Rätsel, warum die Leistung verbessern wenn eine Multimedia-Anwendung läuft, also wäre jeder Einblick in das, was darin vor sich geht, sehr willkommen :)

5voto

Gabe Punkte 82268

Es könnte nur ein Faktor der Tickperiode der Systemuhr sein. Wenn Sie VLC ausführen, wird die Uhr wahrscheinlich alle 1 ms ticken, wodurch die Animationen flüssiger laufen.

Verwenden Sie Clockres um die Auflösung des System-Timers mit und ohne VLC zu überprüfen, um zu sehen, ob es einen Unterschied macht.

をご覧ください。 timeBeginPeriod wie Sie die Zeitspanne selbst festlegen können. Je kürzer die Zeitspanne ist, desto weniger Zeit kann Ihre CPU zwischen den Ticks schlafen, und desto heißer wird sie laufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X