[英]How to get screen size in SDL
我正在嘗試使用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維基:
當SDL全屏運行並更改了分辨率時,[ SDL_GetDesktopDisplayMode ()]和SDL_GetCurrentDisplayMode ()之間存在差異。 在這種情況下,[ SDL_GetDesktopDisplayMode ()]將返回先前的本機顯示模式,而不是當前的顯示模式。
全屏:使用SDL_GetRendererOutputSize
可以非常輕松地SDL_GetRendererOutputSize
你只需傳遞你的SDL_Renderer*
就像這樣:
int w, h;
SDL_GetRendererOutputSize(renderer, &w, &h);
void SDL_GetRendererOutputSize(SDL_Renderer * 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
失敗時你會討厭你的生活!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.