簡體   English   中英

如何在SDL中獲取屏幕大小

[英]How to get screen size in SDL

我正在嘗試使用SDL和C ++編寫程序。 如何在SDL中獲得屏幕的寬度和高度(以像素為單位)?我試圖獲得屏幕的寬度而不是窗口的寬度。

在SDL2中,根據您的需要使用SDL_GetCurrentDisplayModeSDL_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM