16

SDL1.2.14とそれに含まれているOpenGLバインディングを使用してC++でゲームを書いています。

ただし、ゲームが全画面表示でAltTabゲームに戻った場合、結果は予測できません。ゲームロジックは引き続き実行されます。ただし、レンダリングは停止します。Altタブの前に描画されたゲームの最後のフレームのみが表示されます

SDL_APPACTIVE = 1イベントを取得したときにOpenGLコンテキストを再初期化し、すべてのテクスチャをリロードするようにしました。これは1Altつだけで機能するようですTab。その後、すべての後続AltTabオブジェクトはレンダリングを停止します(SDL_APPACTIVEそれぞれが適切に処理されていることを確認しました)時間とそれに応じたコンテキストの設定。)

私が気付いていないアプリケーションを最小化するときに、SDLが内部で何かを行うと推測するのは危険です。

何か案は?

4

1 に答える 1

1

フルスクリーン アプリケーションがフォーカスを失ったときに「速度を落とす」ことは良い習慣です。2 つの理由:

  1. ユーザーは、Alt-Tab を押して何か重要なことを行う必要がある場合があります (リソースを大量に消費している重いアプリケーションを閉じるなど)。彼が切り替えると、新しいアプリケーションが制御を取得し、OS は必要に応じてアプリからリソースを解放する必要があります
  2. 最新の OS は多くの GPU を使用します。これは、機能するためにグラフィックス メモリを解放する必要があることを意味します。

APPACTIVE=0 のときに使用するすべての GL リソースをシャットダウンし、APPACTIVE=1 で再度割り当ててみてください。これで解決したら「あなたのせい」です。解決しない場合は、SDL (または GL または OS) のバグです。

編集: s/SO/OS/g

于 2011-07-13T13:46:06.187 に答える