Hello SDL: Ваше первое окно
Запись от Rem_ размещена 24.08.2015 в 02:00
Показов 5209
Комментарии 0
|
Вольный перевод всеми известного урока от http://lazyfoo.net/tutorials/S... index2.php После настройки SDL создадим простое окно для будущей программы. Сейчас все функции находятся внутри main, но в следующих туторах они будут вынесены. Код сразу пихаю целиком и полностью. Не надо ничего качать. Просто копипастите и пробуйте собирать. Кликните здесь для просмотра всего текста
А теперь описание. В первых строчках мы подключаем сам SDL и стандартную библиотеку ввода вывода. Вдруг будут ошибки, они напечатаются в консоли. Си плюсовики могут использовать iostream. Глобально объявляем размеры нашего будущего окна. 640*480 Объявлять main нужно строго с аргументами для совместимости платформ - int main( int argc, char* args[] ) Затем мы объявляем окно и поверхность. В SDL_Surface может быть загружено 2d изображение из файла и показано внутри окна. После объявления переменных инициализируем SDL. Без этого не будет работать ни одна функция. Инициализировать можно несколько подсистем, но сейчас нам нужна только SDL_INIT_VIDEO. (В будущем могут понадобиться системы для аудио, для таймера, для джойстика и геймпада, а можно сразу все системы запустить флагом SDL_INIT_EVERYTHING) Если произойдёт ошибка, то вернётся значение -1 и в консоль напишется ошибка. Если вы никогда не использовали printf раньше.... ( В общем это из чистого си. Знак %s обозначает, что должна напечататься какая-то строка, а SDL_GetError() эту самую ошибку возвращает в виде строки). Очень полезная функция. Сразу видно где и какая произошла неполадка.После инициализации можно создавать окно SDL_CreateWindow. Первый параметр - заголовок окна. Второй и третий - позиция окна. Так как нам без разницы, то пишем SDL_WINDOWPOS_UNDEFINED, хотя можно поставить 50, 50. Следующие два аргумента - ширина и высота окна. Последний флаг SDL_WINDOW_SHOWN отображает окно после создания. Если произойдёт ошибка, она напечатается в консоль. Когда окно успешно создано, мы должны получить поверхность окна, чтоб рисовать на нём. SDL_GetWindowSurface делает это. Самое простое что мы можем сделать это залить всё окно белым прямоугольником используя SDL_FillRect. Важно знать про рендеринг. Пока вы рисуете что-нибудь на поверхности, вы этого не увидите. Только после всех операций рисования вы должны обновить окно, чтоб всё отобразилось. Вызовите SDL_UpdateWindowSurface чтоб сделать это. Мы создали окно, залили его белым, обновили показали. Всё что мы увидим, это мельком показанное окно и оно сразу закроется. Используем SDL_Delay для задержки. Задержка измеряется в миллисекундах, поэтому SDL_Delay( 2000 ) будет держать окно в течение двух секунд. Важно. Во время использования SDL_Delay невозможно принимать данные с клавиатуры или с мышки. В этом примере не используются ни клава ни мышь, поэтому пусть так будет. После задержки мы закрываем окно, высвобождаем его из памяти. Так же оно освободит и поверхность. Затем мы выходим из SDL и возвращаем значение 0 для завершения программы. | |||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии

В общем это из чистого си. Знак %s обозначает, что должна напечататься какая-то строка, а SDL_GetError() эту самую ошибку возвращает в виде строки). Очень полезная функция. Сразу видно где и какая произошла неполадка.

