SDL C++

Введение

Simple DirectMedia Layer (SDL) — это свободная кроссплатформенная мультимедийная библиотека, реализующая единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ.

Данная библиотека активно используется при написании кроссплатформенных мультимедийных программ (в основном игр).

Официально поддерживаются операционные системы: Linux, Microsoft Windows, Mac OS X, iOS и Android.

SDL API доступны для языков: C, C++, C#, VB.NET, D, Ada, Vala, Eiffel, Haskell, Erlang, Euphoria, Java, Lisp, Lua, ML, Pascal, Perl, PHP, Pike, PureBasic, Python, Go и Ruby.

Основная часть SDL содержит базовый, весьма ограниченный спектр возможностей. Дополнительную функциональность обеспечивают библиотеки расширений, которые обычно входят в поставку SDL.

Начиная с версии 2.0, SDL распространяется под условиями лицензии zlib; до этого использовалась лицензия GNU LGPL, что позволяло свободно использовать библиотеку в коммерческих программах при условии, что она используется в них как динамически подключаемая библиотека.

Содержание статьи
Введение
Скачивание библиотеки SDL2
Создание проекта в Visual Studio
C/C++ General - include
Linker General - lib
Linker Input
SDL2.dll
Видео

Загрузка библиотеки

Скачать SDL2 можно на сайте libsdl.org

Нужно скачивать из подраздела Development Libraries на апрель 2020 версия была 2.0.12 поэтому я выбирал

SDL2-devel-2.0.12-VC.zip (Visual C++ 32/64-bit)

После скачивания создайте на диске С папку Development, распакуйте архив туда и переименуйте папку в SDL2

Создание проекта

После этого в Visual Studio создайте пустой C++ проект. Консольное приложение для win32, например. И в этом проекте создайте файл main.cpp

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Затем кликните на название проекта правой кнопокой мыши и перейдите в Properties в самом нижу контекстного меню. Либо нажмите ALT + Enter

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

C/C++ General - include

C/C++ → General → Additional Include Directories

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Linker General - lib

Linker → General → Additional Library Directories → New Line

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Browse (…)

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Перейдите в папку SDL2, затем в папку lib и выберите x86 или x64

Зайдите туда и нажмите Select Folder

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Linker Input

Linker → Input → Additional Dependencies → <Edit…>

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Введите в две строки:

SDL2.lib
SDL2main.lib

И нажмите OK

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

SDL2.dll

В папке SDL2 перейдите в lib → x86 (или x64 если в предыдущих шагах выбрали x64)

Скопируйте файл SDL2.dll

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

В Visual Studio сделайте правый клик на назывании проекта и в контекстном меню выберите Open Folder in File Explorer

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Вставьте скопированный SDL2.dll в открывшуюся папку

Установка библиотеки SDL в Visual Studio изображение с сайта www.devhops.ru

Видео

Отрисовка пустого окна в SDL

#include <SDL.h> #include <iostream> SDL_Window* g_pWindow = 0; SDL_Renderer* g_pRenderer = 0; bool g_bRunning = false; // this will create a loop bool init(const char* title, int xpos, int ypos, int height, int width, int flags) { // initialize SDL if (SDL_Init(SDL_INIT_EVERYTHING) >= 0) { // if succeeded create our window g_pWindow = SDL_CreateWindow(title, xpos, ypos, height, width, flags); // if the window creation succeeded create our renderer if (g_pWindow != 0) { g_pRenderer = SDL_CreateRenderer(g_pWindow, -1, 0); } } else { return false; // sdl could not initialize } return true; } void render() { // set to dark red SDL_SetRenderDrawColor(g_pRenderer, 128, 0, 20, 255); // clear the window to black SDL_RenderClear(g_pRenderer); // show the window SDL_RenderPresent(g_pRenderer); } int main(int argc, char* argv[]) { if (init("Chapter 1: Setting up SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN)) { g_bRunning = true; } else { return 1; // something is wrong } while (g_bRunning) { render(); } // clean up SDL SDL_Quit(); return 0; }

Статьи о C++
Вектор
Указатели
Классы
SFML
Тетрис на C++ с библиотекой SFML2
Массив Структур
Как узнать тип переменной C++
Решение задач на C++
Как создать пустую строку в C++
Ошибки C++