@olkhovich

Как правильно сделать задержку кадра в SDL2?

Начал писать простейший текстовый редактор на с++ с помощью библиотеки SDL2
Создал родительский класс Connection_SDL, где подключаю SDL, создаю 2 окна(меню и основное рабочее) и накладываю на окна белый фон(просто изображение BMP)
От него унаследовал класс View, в котором написал метод вывода текста на экран(Text) и метод Preview, в котором хочу вывести превью. Все работает, но я хочу, чтобы превью отображалось 3 секунды и пропадало. Написал в конце SDL_Delay(3000), но все получилось наоборот. Отображается 2 окна с фоном и только через 3 секунды появляется текст, который потом не пропадает.
Класс View:
void View::Text(SDL_Surface* scr, const char* message, const char* style_text,
	int size, SDL_Color color, SDL_Rect dest)
{
	TTF_Font* fnt = TTF_OpenFont(style_text, size);
	SDL_Surface* sText = TTF_RenderUTF8_Blended(fnt, message, color);
	SDL_BlitSurface(sText, NULL, scr, &dest);
	SDL_FreeSurface(sText);
	TTF_CloseFont(fnt);
}

 void View::Preview(SDL_Surface* scr)
{
	 Color* color = new Color;
	SDL_Rect dest1 = { 100, 500 };
	Text(scr, "Olhovich I586", "preview.ttf",
		50, color->red, dest1);
	SDL_Rect dest2 = { 100, 550 };
	Text(scr, "Course work: Simple text editor", "preview.ttf",
		50, color->red, dest2);
	SDL_Delay(3000);
}


Вызов метода в main:
SDL_BlitSurface(connect->background_main, NULL, connect->screen_main, NULL);
	SDL_BlitSurface(connect->background_menu, NULL, connect->screen_menu, NULL);
	view->Preview(connect->screen_main);
	SDL_UpdateWindowSurface(connect->window_main);
	SDL_UpdateWindowSurface(connect->window_menu);
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
WinPooh32
@WinPooh32
Stack Overflow answer searching expert
появляется текст, который потом не пропадает.

Потому что нужно перерисовать изображение, например, с помощью функции SDL_RenderClear
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы