Dies ist eher eine offene Frage, aber ich hoffe, einen guten Einblick zu bekommen, wie das Problem vermieden werden kann.
Wenn ich Spiele unter Windows spiele, möchte ich möglicherweise ALT-TAB deaktivieren. Einige Spiele haben keine Probleme, andere sind nicht so einfach: Es kann sein, dass AGES aus- und wieder einschaltet. Einige neigen sogar zum Absturz oder zu seltsamen Verhaltensweisen wie Grafikverzerrungen oder stotterndem Sound.
Ich frage mich nur, was dieses Verhalten verursacht? Ist das eher eine DirectX- oder eine OpenGL-Sache? Liegt es daran, dass Spiele "clever" sind und den Cache zwischenspeichern / löschen, wenn sich die Bildschirmeinstellungen ändern? (Ich nehme an, sie bekommen ein Signal, wenn ich ALT-TAB?)
Ich habe keine eigenen Probleme, aber ich möchte gerne wissen, was ich vermeiden soll und welcher "clevere" Trick kann diese Art von schrecklichem Kundenerlebnis verursachen?
quelle
Antworten:
In einigen Situationen führt ALT-TAB zum Verlust des DirectX-Geräts. Wenn das Gerät verloren geht, müssen alle GPU-Ressourcen (Scheitelpunkte, Texturen, Shader usw.) als ungültig betrachtet werden und können nicht mehr verwendet werden. MSDN-Referenz hier .
Diese verlorenen Ressourcen müssen freigegeben und bei der Wiederherstellung des Geräts neu erstellt werden. Bei den meisten Spielen, bei denen diese Ressourcen wiederhergestellt werden, müssen viele Daten erneut von der Festplatte geladen werden - oft der gleiche Ladevorgang wie zu Beginn des Spiels / Levels.
Was kann getan werden, um dies zu vermeiden?
quelle
In Direct3D kann ein Gerät verloren gehen, wenn Sie ALT-TAB außerhalb des Vollbildfensters drücken. In diesem Fall müssen Sie die Ressourcen freigeben und wiederherstellen und das Gerät zurücksetzen. Dies kann schwierig sein, abhängig von der Komplexität des Spiels oder der Faulheit der Entwickler (hi Valve!). Ich glaube nicht, dass OpenGL unter demselben Problem leidet, da der Treiber dafür verantwortlich ist, den OpenGL-Kontext für Sie zu behalten, aber ich bin nicht sicher.
Auf StackOverflow gibt es eine Frage zu den Best Practices für die ALT-TAB-Unterstützung in einer DirectX-App, die nützliche Links von MSDN und anderen Quellen enthält.
quelle
Es kann die verfügbare Menge an freiem RAM sein. Wenn es bei der Ausführung Ihres Spiels zu niedrig ist, versteckt Windows die meisten seiner Dienste im Auslagerungsbereich (dh es nimmt die meisten der im RAM geladenen Daten und legt sie stattdessen in einem speziellen Bereich Ihrer Festplatte ab), damit Ihr Spiel funktioniert so viel RAM-Speicher wie möglich zur Verfügung zu haben.
Wenn Sie die Tastenkombination Alt + Tab vom Spiel in Windows drücken, müssen diese Dienste in den Arbeitsspeicher geladen werden, damit sie ausgeführt werden können. Daher werden die Spieldaten aus dem Arbeitsspeicher entnommen, im Swap gespeichert und die Windows-Daten abgerufen der Swap in den RAM.
Und wie Sie wissen, kann das Schreiben auf die Festplatte AGES im Vergleich zum RAM-Speicher in Anspruch nehmen. Das gleiche passiert auch, wenn Sie ein schweres Spiel beenden. Aus diesem Grund kann es sehr viel komfortabler sein, über genügend RAM-Speicher sowohl für ein Spiel als auch für Windows zu verfügen.
quelle