Это скорее открытый вопрос, но я надеюсь получить хорошее представление о том, как избежать этой проблемы.
Когда я играю в игры для Windows, я бы хотел использовать ALT-TAB. В некоторых играх нет проблем, в других это не так просто: они могут потребовать ВОЗРАСТ, чтобы переключиться и вернуться обратно. Некоторые даже подвержены сбоям или странному поведению, такому как графическое искажение или заикание звука.
Мне просто интересно, что вызывает такое поведение? Это скорее DirectX или OpenGL? Это вызвано тем, что Игры «умны» и кешируют / стирают кеш при каждом изменении настроек экрана? (Я предполагаю, что они получают какой-то сигнал, когда я ALT-TAB?)
У меня нет никаких собственных проблем, но я хотел бы знать, чего следует избегать, и какой «умный» трюк может вызвать такой ужасный опыт работы с клиентами?
источник
Ответы:
В некоторых ситуациях ALT-TAB приведет к потере устройства DirectX. Когда устройство потеряно, все ресурсы графического процессора (вершины, текстуры, шейдеры и т. Д.) Должны считаться недействительными и не могут использоваться снова. Ссылка MSDN здесь .
Эти потерянные ресурсы должны быть освобождены, а затем воссозданы при восстановлении устройства. В большинстве игр восстановление этих ресурсов требует повторной загрузки большого количества данных с диска - часто такая же процедура загрузки, как и в начале игры / уровня.
Что можно сделать, чтобы этого избежать?
источник
В Direct3D устройство может потеряться, когда вы нажмете ALT-TAB из полноэкранного окна. Если это произойдет, вы должны освободить и восстановить ресурсы и перезагрузить устройство. Это может быть трудно сделать должным образом в зависимости от сложности игры или лени разработчиков (привет Valve!). Я не думаю, что OpenGL страдает от той же проблемы, потому что драйвер отвечает за сохранение контекста OpenGL для вас, но я не уверен.
В StackOverflow есть вопрос о лучших методах поддержки ALT-TAB в приложении DirectX, которое включает полезные ссылки из MSDN и других источников.
источник
Это может быть доступное количество свободного барана. Если оно слишком низкое, когда ваша игра запускается, Windows скрывает большинство своих служб в области подкачки (т.е. берет большую часть данных, загруженных в ОЗУ, и вместо этого помещает их в специальную область вашего жесткого диска) для вашей игры. иметь как можно больше свободного места в оперативной памяти.
Затем, когда вы нажимаете alt + tab из игры в Windows, эти службы должны быть загружены в ОЗУ, чтобы они работали, поэтому он заберет данные вашей игры из ОЗУ, сохранит их в разделе подкачки и извлечет данные Windows из своп в оперативку.
И, как вы знаете, запись на жесткий диск может занять AGES по сравнению с RAM. То же самое происходит на самом деле, когда вы выходите из тяжелой игры. Вот почему наличие достаточного объема оперативной памяти как для игры, так и для окон может быть действительно более удобным.
источник