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 */
반응형