私は C++ ゲームを作成していますが、ユーザーのデスクトップ解像度を自動的に取得したいと考えています。
これまでのところ、Windows のみのソリューションを見つけました。Windows/Mac/Linux で解決策を見つける方法/ライブラリはありますか?
私は C++ ゲームを作成していますが、ユーザーのデスクトップ解像度を自動的に取得したいと考えています。
これまでのところ、Windows のみのソリューションを見つけました。Windows/Mac/Linux で解決策を見つける方法/ライブラリはありますか?
低レベルのものをうまく機能させるのに役立つライブラリがいくつかあります。とにかく、これらのプラットフォームではおそらくもっと多くのものが必要になるので、いくつかリストします。
GLFWは、クロスプラットフォーム (Windows、Mac、および Linux) でデスクトップ ビデオ モードを取得する方法を提供します。これはC apiですが、C++ でも動作します。関連する関数 (およびドキュメント) は次のとおりです。
void glfwGetDesktopMode( GLFWvidmode *mode )
パラメーター
mode
GLFWvidmode
関数によって埋められる構造体
へのポインタ。
戻り値
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 の回答を参照してください。