1

小さなグラフィック エンジンを DirectX 9 から OpenGL に移植しています。エンジンは SDL (現在は 2.0 に移植) を使用して、入力とウィンドウの作成を管理します。

OpenGL と DirectX の両方のウィンドウ イベントを正しく処理する方法を知りたいです。デスクトッププラットフォーム(Linux、OSX、およびWindows)のこれらに興味があります

  • ウィンドウ解像度の変更
  • フルスクリーンからウィンドウへ/ウィンドウからフルスクリーンへの処理
  • Alt+tab 処理 -

ネットで検索してみましたが、なかなか情報がまとまっていません。他の多くの人が以前に同じ問題に直面したと思います。

エンジンのその種の処理に関するガイドラインを読むためのリソースはありますか? OpenGL と DirectX の両方で、転送されたリソースをレンダラー システムに失うことなく解像度の変更を処理することは可能ですか?

4

1 に答える 1

3
  • ウィンドウ解像度の変更

OpenGL 自体には、これに対する特別な処理は必要ありません。残念ながら、SDL は、ウィンドウ サイズの変更時に OpenGL コンテキストを含め、ウィンドウ全体を再初期化します。つまり、すべての OpenGL 状態オブジェクト (つまり、テクスチャ、頂点バッファー、シェーダーなど) が失われます。

ただし、これは SDL の制限です。

個人的には、OpenGL ウィンドウとコンテキストを作成するために GLFW を好みます。ただし、他のこと (オーディオ、ネットワーク、画像の読み込みなど) には SDL を使用できます。

  • フルスクリーンからウィンドウへ/ウィンドウからフルスクリーンへの処理

これは事実上、ウィンドウ サイズの変更でもあります。上記を参照。

  • Alt+tab 処理 -

OpenGL では、これに特別な努力は必要ありません。Alt+Tab キーでウィンドウを最小化し、ゲーム ループを停止します。ウィンドウが復元されたら、ゲーム ループを続行します。

于 2012-06-29T12:13:11.940 に答える