반응형

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

 

#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);
	}

	SDL_free(displays);

	// 위 코드보다 간단히 현재 디스플레이 정보만 가져오기(해상도, 주사율 등)
	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 */

 

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

 

반응형
Posted by J-sean
: