Нарисуйте изображение в функции

Я хочу, чтобы изображение было нарисовано при нажатии клавиши пробела. Это мой код:

void drawImage()
{
rect.x = 100;
rect.y = 100;

SDL_Surface *image = IMG_Load("image.png");
SDL_BlitSurface(image, NULL, screen, &rect);
}

Вот это называется:

while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
{
gameRunning = false;
}
if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_SPACE)
{
drawImage();
}
}

}

Изображение не рисуется, когда я нажимаю клавишу пробела. Что случилось?

0

Решение

кувырок экранные буферы (SDL_Surfaces).

2

Другие решения

После вашей строки

SDL_BlitSurface(image, NULL, screen, &rect);

добавлять

SDL_UpdateRect(screen, 0, 0, 0, 0);
1

Функция рисует в главном цикле без пробела?

bool draw = false;

while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
{
gameRunning = false;
}
if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_SPACE)
{
draw = true;
}
}

}int main()
{
if(draw){
drawImage();
}
//DO SOME ERROR CHECKING

}
-1
По вопросам рекламы [email protected]