Il s'agit plus d'une question ouverte, mais j'espère avoir une bonne idée de la façon d'éviter le problème.
Lorsque vous jouez à des jeux sur Windows, je voudrais peut-être ALT-TAB en sortir. Certains jeux n'ont pas de problèmes, d'autres ne sont pas si faciles: ils peuvent prendre AGES pour s'éteindre et revenir. Certains sont même sujets à planter ou à des comportements étranges comme la distorsion graphique ou le son bégaiement.
Je me demande simplement ce qui cause ce comportement? Est-ce plus une chose DirectX ou OpenGL? Est-ce dû au fait que les jeux sont «intelligents» et mettent en cache / effacent le cache chaque fois que les paramètres d'écran changent? (Je suppose qu'ils obtiennent une sorte de signal lorsque je ALT-TAB?)
Je n'ai pas de problème, mais j'aimerais savoir quoi éviter et quelle astuce «intelligente» peut provoquer ce type d'horrible expérience client?
la source
Réponses:
Dans certaines situations, ALT-TAB entraînera la perte du périphérique DirectX. Lorsque le périphérique est perdu, toutes les ressources GPU (sommets, textures, shaders, etc.) doivent être considérées comme non valides et ne peuvent pas être réutilisées. Référence MSDN ici .
Ces ressources perdues doivent être libérées, puis recréées lorsque le périphérique est restauré. Dans le cas de la plupart des jeux, la restauration de ces ressources nécessite de charger à nouveau beaucoup de données à partir du disque - souvent la même procédure de chargement que celle effectuée au début du jeu / niveau.
Que peut-on faire pour éviter cela?
la source
Dans Direct3D, un périphérique peut se perdre lorsque vous ALT-TAB hors de la fenêtre plein écran. Si cela se produit, vous devez libérer et restaurer les ressources et réinitialiser l'appareil. Cela peut être difficile à faire correctement en fonction de la complexité du jeu ou de la paresse des développeurs (salut Valve!). Je ne pense pas qu'OpenGL souffre du même problème parce que le pilote est responsable de garder le contexte OpenGL pour vous, mais je ne suis pas sûr.
Il y a une question sur StackOverflow sur les meilleures pratiques pour la prise en charge ALT-TAB dans une application DirectX qui comprend des liens utiles à partir de MSDN et d'autres sources.
la source
Il peut s'agir de la quantité de RAM disponible. S'il est trop bas, lorsque votre jeu s'exécute, Windows cache la plupart de ses services dans la zone de swap (c'est-à-dire qu'il prend la plupart des données chargées dans la RAM et les place à la place dans une zone spéciale de votre disque dur) pour que votre jeu d'avoir autant d'espace RAM disponible que possible.
Ensuite, lorsque vous alt + tab du jeu vers Windows, il a besoin que ces services soient chargés dans la RAM pour fonctionner, donc il prendra vos données de jeu de la RAM, les stockera dans le swap et tirera les données de Windows de le swap à la RAM.
Et comme vous le savez, l'écriture sur le disque dur peut prendre AGES par rapport à la RAM. La même chose se produit également lorsque vous quittez un jeu lourd. C'est pourquoi avoir suffisamment d'espace RAM pour un jeu et des fenêtres peut être vraiment plus confortable.
la source