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.eth1.ru

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

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

C/C++ General - include

C/C++ → General → Additional Include Directories

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

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

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

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

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

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

Linker General - lib

Linker → General → Additional Library Directories → New Line

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

Browse (…)

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

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

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

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

Linker Input

Linker → Input → Additional Dependencies → <Edit…>

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

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

SDL2.lib
SDL2main.lib

И нажмите OK

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

SDL2.dll

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

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

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

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

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

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

Установка библиотеки SDL в Visual Studio изображение с сайта www.eth1.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++
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: