SDL2 프로그램이 창이 전체 화면인지 여부를 알기 위해 SDL_GetWindowFlags()를 사용하여 해당 정보를 얻을 수 있다고 생각했습니다. 기본적으로 나는 두 개의 플래그로 창을 초기화합니다 : SDL_WINDOW_SHOWN과 SDL_WINDOW_BORDERLESS는 각각 16과 4입니다. 따라서 함수가 20을 반환 할 것으로 예상했지만 대신 532를 얻었습니다. 그리고 때로는 1556을 사용하여 창을 몇 번 다시 초기화 한 후 런타임 중에 532로 변경되기도합니다. 그러나 런타임 중에는 532가 1556으로 변경되지 않습니다.SDL_GetWindowFlags()가 무작위로 보이는 값을 반환합니다.
이 플래그는 어떻게 작동합니까?
bool init(int windowflags)
{
bool success = true;
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("Video initialization failed: %s\n", SDL_GetError());
success = false;
}
else
{
gWindow = SDL_CreateWindow("VIRGULE", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIN_W, WIN_H, SDL_WINDOW_SHOWN + windowflags);
if(gWindow == NULL)
{
printf("Window could not be created: %s\n", SDL_GetError());
success = false;
}
else
{
gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED + SDL_RENDERER_TARGETTEXTURE);
if(gRenderer == NULL)
{
printf("Renderer could not be created: %s\n", SDL_GetError());
success = false;
}
else
{
gTexture = SDL_CreateTexture(gRenderer, SDL_PIXELFORMAT_UNKNOWN, SDL_TEXTUREACCESS_TARGET, SCR_W, SCR_H);
if(gTexture == NULL)
{
printf("Texture creation failed: %s\n", SDL_GetError());
success = false;
}
}
}
}
printf("%i\n", SDL_GetWindowFlags(gWindow));
//this is either prints 1556 or 532
return success;
}