SDLとC++を使ってプログラムを作ろうとしています。 SDLで画面の幅と高さをピクセル単位で取得するにはどうすればよいですか?ウィンドウの幅ではなく画面の幅を取得しようとしています。 。 。 。
SDL2では、 SDL_GetCurrentDisplayMode
または SDL_GetDesktopDisplayMode
ニーズに応じて。使用例:
SDL_DisplayMode DM;
SDL_GetCurrentDisplayMode(0, &DM);
auto Width = DM.w;
auto Height = DM.h;
高DPIディスプレイでは、これは物理解像度ではなく仮想解像度を返します。
SDL2 wikiから:
SDLがフルスクリーンで実行され、解像度が変更された場合、[ SDL_GetDesktopDisplayMode ()]と SDL_GetCurrentDisplayMode ()には違いがあります。その場合、[ SDL_GetDesktopDisplayMode ()]は、現在の表示モードではなく、以前のネイティブ表示モードを返します。
フルスクリーンの場合: _SDL_GetRendererOutputSize
_を使用すると非常に簡単に実行できます
次のように_SDL_Renderer*
_を渡す必要があります。
_int w, h;
SDL_GetRendererOutputSize(renderer, &w, &h);
_
void SDL_GetRendererOutputSize(SDL_Renderer *レンダラー、int * w、int * h)
レンダラーレンダリングコンテキスト
wレンダラーの幅で埋められたポインター
hレンダラーの高さで埋められたポインター
フルスクリーン以外の場合:
SDL_GetDesktopDisplayMode()
の使用
_SDL_DisplayMode dm;
if (SDL_GetDesktopDisplayMode(0, &dm) != 0)
{
SDL_Log("SDL_GetDesktopDisplayMode failed: %s", SDL_GetError());
return 1;
}
int w, h;
w = dm.w;
h = dm.h;
_
エラーチェックをしてください!または、_SDL_GetDesktopDisplayMode
_が失敗すると、あなたは自分の人生を憎むでしょう!