Просто "заметки на полях"
Выход из программы
Это должно использоваться когда мы вышли из цикла демонстрации.SDL_Quit(); return EXIT_SUCCESS;
Для того чтобы сработал return EXIT_SUCCESS; необходимо подключить stdlib:
В начале каждого гениального творения на языке Си. Оптимизация невключением заголовочных файлов и выбрасыванием корректного выхода называется просто - идиотизм.#include «stdlib.h»
Освобождение ресурсов
То он обязан был перед выходом из демонстрации написать:SDL_Surface *screen;
но конечно он этого не сделал. Если вы портируете SDL-софтину на Амигу или другую платформу - проверьте. Этот козёл точно ничего не освобождает.SDL_FreeSurface(screen);
Цикл с опросом
но оно кочует из кода в код уже лет десять. Несмотря на комментарии пользователей к релизам "у меня не закрывается окно", "мне не выйти из программы". Как демомейкеры занимаются программированием? Копипастят друг у друга и продвигаются методом научного тыка! Правильно так:while ((!SDL_PollEvent (&ev) || ev.type!=2))
теперь демонстрация будет обрываться по нажатию любой клавиши или при явлении сигнала "на выход" в SDL-либу, например от события закрытия того же окна с демкой в любой ОС, включая AmigaOS. И это - нормально, если пользователь не хочет видеть ваше творение он должен лёгким движением пальца его закрыть!while ((SDL_PollEvent (&ev)||ev.type!=SDL_QUIT&&ev.type!=SDL_KEYDOWN))
Производительность
Иначе вся ваша демонстрация превратится в одно сплошное мельтяшение. Значение задержки определяется экспериментально (где-то это 5, а где-то 20), в зависимости от того под какую ОС делается релиз.SDL_Delay(8); SDL_PumpEvents();
Заикающиеся демонстрации
демонстрация будет заикаться и залипать на куче платформ. Потому что два вложенных цикла while это хорошо, наверное, только на Бейсике. Когда мы занимаемся выводом на экран - это табу. Цикл опроса должен быть один, такой как показано выше в заметке "Цикл с опросом".while (stillRunning) { while (SDL_PollEvent(&theEvent)) { if (theEvent.type == SDL_QUIT) { stillRunning = 0; }
Заголовок окна
после SDL_Init(SDL_INIT_VIDEO); (а скорее всего просто не знают о её существовании). В результате окно приложения получает свой законный заголовок "SDL_Window". Это выглядит как "кишки наружу", пользователь сразу видит что перед ним полуфабрикат с использованием SDL. Если человек который написал программу (чаще всего это intro) никак не назвал окно - назовите его по имени программы за него. Потому что мы не должны страдать из-за несовпадения радиуса кривизны рук у демомейкеровSDL_WM_SetCaption("My genius stupidity demo",NULL);