//Get screen resolution
SDL_DisplayMode current;
cout << "num_displays : " << SDL_GetNumVideoDisplays() << endl;
for (int i = 0; i < SDL_GetNumVideoDisplays(); ++i){
SDL_GetDesktopDisplayMode(i, ¤t);
cout << "current.w [ " << current.w << " ] - current.h [ " << current.h << " ]\n";
}
次のコードは、接続されている各ディスプレイの画面解像度を表示します。問題は、1920 x 1080モードで実行すると、間違った解像度が表示されることです。しかし、メインディスプレイで解像度を1600 x 900以下に下げると、current.w &のcurrent.hの値が完璧です。SDL_GetDesktopDisplayMode()が取得できません1080
これはSDLの制限ですか、ディスプレイドライバに問題がありますか?
IDE:コードブロック(32ビット) - コンパイラ:MinGWの
EDIT:間違ったが、実際には非常に特定の値ではないごみです。 1920 - 1080の代わりに間違った出力が常にあります1536 - 864
「間違っている」とは実際に何を意味するのですか(その半分は負、NaN、...)ですか? – Brendan
要因は1.25あなた(またはあなたのOS)はこの解像度であなたのデスクトップ(highdpi)スケーリングを1.25に設定しましたか?その場合、アプリケーションをhighdpi対応に設定したいかもしれませんが、OS上で実行されます(osx上のplistまたはウィンドウ上のマニフェスト)。 – PeterT