SDL, raylib

[SDL3] Display Information 디스플레이 정보 가져오기

J-sean 2025. 6. 2. 00:03
반응형

Display number, name, format, width, height, refresh rate 등의 정보를 확인해 보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <SDL3/SDL.h>
 
int main() {
    if (!SDL_Init(SDL_INIT_VIDEO)) {
        SDL_Log("Couldn't initialize SDL: %s", SDL_GetError());
        return SDL_APP_FAILURE;
    }
 
    // 모든 디스플레이 정보 가져오기(해상도, 주사율 등)
    int num_displays;
    SDL_DisplayID* displays = SDL_GetDisplays(&num_displays);
    SDL_Log("Found %d display(s)\n\n", num_displays);
 
    for (int i = 0; i < num_displays; i++) {
        const SDL_DisplayMode* displaymode = SDL_GetCurrentDisplayMode(displays[i]);
        SDL_Log("Display %d: %s(width: %d, height: %d)", i, SDL_GetDisplayName(displays[i]),
            displaymode->w, displaymode->h);
    }
 
    // 위 코드보다 간단히 현재 디스플레이 정보만 가져오기(해상도, 주사율 등)
    const SDL_DisplayMode* displaymode = SDL_GetCurrentDisplayMode(SDL_GetPrimaryDisplay());
    SDL_Log("\nPrimary Display: %s(width: %d, height: %d)", SDL_GetDisplayName(SDL_GetPrimaryDisplay()),
        displaymode->w, displaymode->h);
 
    SDL_Quit();
 
    return 0;
}
 

 

코드를 작성하고 빌드한다.

SDL_DisplayMode 구조체는 아래와 같이 구성되어 있다.

■ SDL_DisplayID displayID; /* the display this mode is associated with */
■ SDL_PixelFormat format; /* pixel format */
■ int w; /* width */
■ int h; /* height */
■ float pixel_density; /* scale converting size to pixels (e.g. a 1920x1080 mode with 2.0 scale would have 3840x2160 pixels) */
■ float refresh_rate; /* refresh rate (or 0.0f for unspecified) */
■ int refresh_rate_numerator; /* precise refresh rate numerator (or 0 for unspecified) */
■ int refresh_rate_denominator; /* precise refresh rate denominator */

 

실행하면 디스플레이 정보가 표시된다.

 

반응형