Добрый день и добро пожаловать. Это серия статей будет посвящена библиотеке SDL2. В них я дам базовые знания, необходимые для написания графических приложений с помощью этой библиотеки. SDL2 - низкоуровневая библиотека, написанная для получения "почти" прямого доступа ко всему оборудованию компьютера. Что это значит? Больше скорости работы, меньше памяти, но и требования по знаниям у нее чуть больше. Но ничего бояться не нужно. Самый большой ее плюс в том, что она кроссплатформена, хотите писать код с минимальным отличием, который будет работать как в Windows так и в Linux/Mac? Тогда вам сюда.
Сразу же скачаем библиотеку. Для пользователей windows все упаковано в архив и прикреплено к уроку. Распакуйте этот архив куда угодно. Я положил в корень диска С (С:\SDL2)
Открываем студию и создаем новый проект -> Пустой проект.
Создаем в нем любой .cpp файл. Это важный шаг.
Нажимаем правой кнопкой мыши (ПКМ) в обозревателе решений по проекту -> свойства.
Если все хорошо то видим такое окно:
Выбираем С/С++ -> Общие -> Дополнительные каталоги включаемых файлов
Находим папку SDL2 и заходим в папку Includes. Нажимаем ОК. В строке получится что-то вроде C:\SDL2\include;%(AdditionalIncludeDirectories)
Дальше идем в Компоновщик -> Общие -> Дополнительные файлы библиотек
Сюда уже вставляем папку SDL2\lib\x86 (можно и 64, но для наших приложений разницы, кроме как в объеме ОП, нет).
Компоновщик -> Ввод -> Дополнительные зависимости
Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это:
SDL2.lib SDL2main.lib SDL2test.lib
Заходим в Компоновщик -> Система -> Подсистема
Выбираем (если не стоит) консоль.
А теперь последний штрих. Соберите проект как он есть. Это создаст ехе-файл.
Перейдите в папку "мои документы" и найдите свой проект (у меня мои документы/Visual studio 2015/projects/project1/debug) и помеcтите туда файл SDL2.DLL. Ваша программа НЕ БУДЕТ работать без этого файла.
Теперь небольшой код для проверки всего, что мы настроили:
//подключим SDL и stdio #include <SDL.h> #include <cstdio> //Некоторые константы нашего окна const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main(int argc, char* args[]) { //Какое окно будет рендерится SDL_Window* window = NULL; //Поверхность окна SDL_Surface* screenSurface = NULL; //Включим SDL if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("SDL не смог запуститься! SDL_Error: %s\n", SDL_GetError()); } else { //Создаем окно window = SDL_CreateWindow("Урок1", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (window == NULL) { printf("Окно не может быть создано! SDL_Error: %s\n", SDL_GetError()); } else { //Получаем поверхность screenSurface = SDL_GetWindowSurface(window); //Заполняем ее белым цветом SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF)); //Обновляем поверхность SDL_UpdateWindowSurface(window); //Ждем две секунды SDL_Delay(2000); } } //И удаляем из памяти окно SDL_DestroyWindow(window); //Выход из SDL SDL_Quit(); return 0; }
Если в результате его выполнения вы увидели консоль и окно (Которое через 2 секунды закрылось), то вы все сделали правильно! До встречи на следующем уроке.
Прикрепленный файл | Размер |
---|---|
SDL_Lesson1.zip | 1.99 Мб |
Комментарии
ошибка : пишет не удается открыть источник файл "SDL.h"
Из за этой ошибки не удается запустить программу хотя я все сделал правильно , в результате код не работает :
//подключим SDL и stdio
#include
#include
//Некоторые константы нашего окна
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[])
{ ....
НЕ РАБОТАЕТ ЭТА БИБЛИОТЕКА : SDL.h ?
ошибка при запуске кода 0xc00000ba
Сделал всё как сказали но ошибка. В папке debag создал папку sdl2.dll но чёт не работает помогите кто шарит
Все верно, но так же необходимо зайти в:
Компоновщик -> Ввод -> Дополнительные зависимости
Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это:
SDL2.lib
SDL2main.lib
SDL2test.lib
Без этого не заработает. (MVS 2015)
Спасибо, поправил
Сейчас заметил, что в некоторых системах visual studio не создает ехе файл для пустого проекта. В таком случае просто создайте эту папку (debug) и поместите sdl2.dll туда