ALT-TABが「迷惑」/遅い/グリッチになる原因は何ですか?


25

これはより自由な質問ですが、この問題を回避する方法についての良い洞察を得たいと思います。

Windowsでゲームをプレイするとき、Altキーを押しながらTabキーを押して外したい場合があります。問題のないゲームもあれば、それほど簡単ではないゲームもあります。AGESを使用してスイッチを入れたり戻したりする場合もあります。

この動作の原因は何だろうか?これはDirectXまたはOpenGLのどちらですか?ゲームが「巧妙」であり、画面設定が変更されるたびにキャッシュをキャッシュ/ワイプすることが原因ですか?(Altキーを押しながらTabキーを押すと、何らかの信号が表示されると思いますか?)

私自身の問題はありませんが、何を避けるべきか、どのような「賢い」トリックがこの種の恐ろしい顧客体験を引き起こす可能性があるのか​​知りたいのですが?


1
いい質問です!いつものように、洞察に満ちた答えが得られることを願っています!

回答:


17

状況によっては、ALT-TABによりDirectXデバイスが失われます。デバイスが失われた場合、すべてのGPUリソ​​ース(頂点、テクスチャ、シェーダーなど)は無効であると見なされ、再度使用することはできません。MSDNリファレンスはこちら

これらの失われたリソースを解放し、デバイスの復元時に再作成する必要があります。ほとんどのゲームの場合、これらのリソースを復元するには、多くのデータを再度ディスクからロードする必要があります。多くの場合、ゲーム/レベルの開始時と同じロード手順です。

これを避けるために何ができますか?

  • RAMにデータのキャッシュを保持できるため、HDからリロードするよりもGPUにデータを戻す方が速くなります。DirectXにこれを自動的に行わせる方法があると思います。
  • DirectXの新しいバージョンを使用します。この引用(ソース)は、DirectX 9ExのMSDNからのものです。

現在、デバイスは2つの状況でのみ失われます。ハードウェアがハングしているためにリセットされたとき、およびデバイスドライバーが停止したとき。ハードウェアがハングした場合、ResetExを呼び出してデバイスをリセットできます。ハードウェアがハングすると、テクスチャメモリが失われます。


その引用のリンクを提供してもらえますか?また、デスクトップをロックするとデバイスが失われます。
キロタン

引用用のリンクを追加しました。
CiscoIPPhone

1
DirectXの動作の変更は、ドライバーモデルの変更の副作用です。つまり、WDDMが必要です。したがって、Vista / Win7のみです。
バーバー

7

Direct3Dでは、全画面ウィンドウからAltキーを押しながらTabキーを押すと、デバイスが失われる可能性があります。その場合は、リソースを解放して復元し、デバイスをリセットする必要があります。これは、ゲームの複雑さや開発者の怠inessさ(こんにちはValve!)によっては、適切に実行するのが難しい場合があります。OpenGLコンテキストを保持するのはドライバーの責任であるため、OpenGLが同じ問題に苦しんでいるとは思いませんが、わかりません。

StackOverflowには、MSDNやその他のソースからの便利なリンクを含むDirectXアプリでのALT-TABサポートのベストプラクティスに関する質問があります。


3
あなたは正しい、OpenGLが(それほど)苦しんでいない理由は、ドライバーがWindows上のすべてのコピーを保持しているからです。これにより、GLアプリはDXアプリよりも多くのRAMを使用する可能性がありますが、適切に動作するDXアプリは、とにかくコンテキストデータを復元する必要がある場合に備えてすべてをキャッシュする必要があるため、キャッシングの責任は誰にあります。
ブラナン

それは本当です(OpenGLについて)。
右上

0

空きラムの利用可能量になります。低すぎると、ゲームの実行時にWindowsがほとんどのサービスをスワップ領域に隠します(つまり、RAMにロードされたデータの大部分を取得し、代わりにハードドライブの特別な領域に配置します)。可能な限りドロドロの使用可能なRAMスペースを確保します。

次に、ゲームからWindowsにAlt + Tabキーを押すと、これらのサービスが動作するためにRAMにロードされる必要があります。そのため、RAMからゲームデータを取得し、スワップに保存し、WindowsデータをRAMへのスワップ。

また、ご存知のように、ハードドライブへの書き込みはRAMと比較してAGESを取ることができます。実際に重いゲームを終了したときにも同じことが起こります。そのため、ゲームとウィンドウの両方に十分なRAM容量を確保すると、非常に快適になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.