11

私は C++ ゲームを作成していますが、ユーザーのデスクトップ解像度を自動的に取得したいと考えています。

これまでのところ、Windows のみのソリューションを見つけました。Windows/Mac/Linux で解決策を見つける方法/ライブラリはありますか?

4

3 に答える 3

7

低レベルのものをうまく機能させるのに役立つライブラリがいくつかあります。とにかく、これらのプラットフォームではおそらくもっと多くのものが必要になるので、いくつかリストします。

  • SFMLは、ディスプレイ管理を含む I/O の多くを抽象化するC++ ライブラリです。また、いくつかのプラットフォームをサポートしています。
  • 従来のSDLC ライブラリですが、プラットフォームに依存しないゲーム開発で広く使用されており、複数のプラットフォームをサポートしています。SFML と同様に、表示管理以上のことを行います。
  • GLFW 、 wardds answerを参照してください。これもC ライブラリであり、抽象化レイヤーも提供しますが、より広範な I/O (オーディオなど) ではなく、ディスプレイとキーボード/マウス I/O に重点を置いています。
于 2012-11-16T17:41:52.923 に答える
6

GLFWは、クロスプラットフォーム (Windows、Mac、および Linux) でデスクトップ ビデオ モードを取得する方法を提供します。これはC apiですが、C++ でも動作します。関連する関数 (およびドキュメント) は次のとおりです。

void glfwGetDesktopMode( GLFWvidmode *mode )

パラメーター

modeGLFWvidmode関数によって埋められる構造体 へのポインタ。

戻り値

mode が指す構造体にはGLFWvidmode、デスクトップ ビデオ モードが入力されます。

説明

この関数は、デスクトップ ビデオ モードをGLFWvidmode構造体で返します。構造体glfwGetVideoModes の定義については、を参照してください。GLFWvidmode

ノート

デスクトップ ディスプレイの色深度は、デスクトップが RGB または RGBA カラー フォーマットを使用していない場合でも、個々のカラー コンポーネント (赤、緑、青) のビット数として常に報告されます。たとえば、インデックス付きの 256 色のディスプレイは、RedBits = 3、GreenBits = 3、および BlueBits = 2 を報告する場合があり、合計で最大 8 ビットになります。

デスクトップ ビデオ モードは、現在のビデオ モードではなく、GLFW ウィンドウが開かれたときにデスクトップで使用されたビデオ モードです (GLFW ウィンドウがフルスクリーン ウィンドウの場合、デスクトップ ビデオ モードとは異なる場合があります)。

typedef struct {
  int Width, Height; // Video resolution
  int RedBits; // Number of red bits
  int GreenBits; // Number of green bits
  int BlueBits; // Number of blue bits
} GLFWvidmode;

代替案については、 Jonas Wielicki の回答を参照してください。

于 2012-11-16T17:39:32.930 に答える