Мой вопрос выскочил при чтении учебников по SDL2, на lazyfoo.net и код копируется из this pageSDL2 основного цикл игры
int main(int argc, char* args[])
{
//Start up SDL and create window
if(!init())
{
printf("Failed to initialize!\n");
}
else
{
//Load media
if(!loadMedia())
{
printf("Failed to load media!\n");
}
else
{
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//While application is running
while(!quit)
{
//Handle events on queue
while(SDL_PollEvent(&e) != 0)
{
//User requests quit
if(e.type == SDL_QUIT)
{
quit = true;
}
}
//Clear screen
SDL_RenderClear(gRenderer);
//Render texture to screen
SDL_RenderCopy(gRenderer, gTexture, NULL, NULL);
//Update screen
SDL_RenderPresent(gRenderer);
}
}
}
//Free resources and close SDL
close();
return 0;
}
Вот почему мы оказывающее влияние внутри основного контура и сделать он запускается снова и снова, а не как:
int main(int argc, char* args[])
{
//Start up SDL and create window
if(!init())
{
printf("Failed to initialize!\n");
}
else
{
//Load media
if(!loadMedia())
{
printf("Failed to load media!\n");
}
else
{
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//Clear screen
SDL_RenderClear(gRenderer);
//Render texture to screen
SDL_RenderCopy(gRenderer, gTexture, NULL, NULL);
//Update screen
SDL_RenderPresent(gRenderer);
//While application is running
while(!quit)
{
//Handle events on queue
while(SDL_PollEvent(&e) != 0)
{
//User requests quit
if(e.type == SDL_QUIT)
{
quit = true;
}
}
}
}
}
//Free resources and close SDL
close();
return 0;
}
Я полагаю, что есть причина, как это делается во многих учебниках. Но я не могу получить причину.
Просто хотел упомянуть, что событие 'SDL_QUIT' генерируется нажатием значка' X' в правом верхнем углу окна SDL, а не нажатием клавиши Escape. – LastBlow