세분화 오류가 발생했습니다.이 오류는 내 표면 (NULL 인 경우)에서 추적했습니다 (그러나 체크인은 실행되지 않습니다).SDL Surface가 NULL을 반환합니까?
내가 표면을 올바르게 만들고 있는지 확실하지 않습니다. 표면을 만들 때 추가해야 할 것이 있습니까? 내가 놓친 부분이 있습니까?
bool init()
{
//Initialize SDL
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL could not initialize! SDL Error: %s\n", SDL_GetError());
return false;
}
else
{
//Set texture filtering to linear
if(!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"))
{
printf("Warning: Linear texture filtering not enabled!");
return false;
}
else
{
//Create window
gWindow = SDL_CreateWindow("kPaint", 575, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
GUI = SDL_CreateWindow("GUI", 0, SDL_WINDOWPOS_UNDEFINED, 573, 542, SDL_WINDOW_SHOWN);
if(gWindow == NULL || GUI == NULL)
{
printf("Window could not be created! SDL Error: %s\n", SDL_GetError());
return false;
}
else
{
//Create renderer for window
gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED);
if(gRenderer == NULL)
{
printf("Renderer could not be created! SDL Error: %s\n", SDL_GetError());
return false;
}
surface = SDL_GetWindowSurface(gWindow);
GUIsurface = SDL_GetWindowSurface(GUI);
if(surface == NULL)
{
printf("surface could not be created!");
return false;
}
SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 255,255,255));
//Initialize PNG loading
int imgFlags = IMG_INIT_PNG;
if(!(IMG_Init(imgFlags) && imgFlags))
{
printf("SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError());
return false;
}
}
}
}
return true;
}
SDL_GetWindowSurface() 전에 렌더러를 만들지 마십시오. 잘못된 것일 수도 있지만 iirc SDL은 해당 윈도우에 대한 렌더러를 만든 후에 창 표면을 가져올 수 없도록합니다. – neoaggelos
나중에 생성 한 null이지만 나중에 null 인 경우 변경해야합니다. 사이. – molbdnilo
또한 SDL_FillRect()의 반환 값을 검사하여 무언가 잘못되었는지 확인할 수 있습니다. – neoaggelos