Настройка SDL 2 в Visual Studio 2019 Community

Подготовка рабочего окружения для C++

В силу природной лени эксперименты с графическими эффектами я решил продолжить в современном окружении на C++ и использовать SDL2 для вывода графики. В этой заметке покажу процесс настройки окружения. Это будет базовый каркас для дальнейшей работы.

Для начала нужно скачать и установить Visual Studio 2019 Community. Сделать это можно по ссылке https://visualstudio.microsoft.com/ru/vs/. И при установке выбрать пакет «Разработка классических приложений на C++».

И при установке выбрать пакет «Разработка классических приложений на C++».

Далее необходимо скачать библиотеку SDL2 по ссылке http://libsdl.org/download-2.0.php.

Далее необходимо скачать библиотеку SDL2.

В архиве находятся заголовочные и бинарные файлы библиотеки. Распаковать архив можно в любое место, но лучше если это будет общее хранилище библиотек. Например у меня это c:\Users\Vladimir\source\vclib\SDL2-2.0.14\. Дальнейшие настройки будут учитывать этот путь. У вас он наверняка будет отличаться.

Теперь запускаем Visual Studio и создаём новый пустой проект.

Теперь запускаем Visual Studio и создаём новый пустой проект.

Выбираем 64-битную платформу для сборки.

Выбираем 64-битную платформу для сборки.

Переходим в настройки свойств проекта.

Переходим в настройки свойств проекта.

Выбираем «Каталоги VC++» затем «Включаемые каталоги» и нажав справа кнопку выбираем «Изменить…»

Выбираем «Каталоги VC++» затем «Включаемые каталоги» и нажав справа кнопку выбираем «Изменить…»

В следующем окне нажимаем кнопку «Создать строку» и указываем путь до папки include библиотеки SDL2. У меня это C:\Users\Vladimir\source\vclib\SDL2-2.0.14\include. И подтверждаем выбор нажатием на «OK».

В следующем окне нажимаем кнопку «Создать строку» и указываем путь до папки include библиотеки SDL2.

Теперь переходим в «Компоновщик» → «Ввод» → «Дополнительные зависимости». Нажав справа кнопку выбираем «Изменить…».

Теперь переходим в «Компоновщик» → «Ввод» → «Дополнительные зависимости».

Там в верхнем окошке пишем SDL2.lib; SDL2main.lib;. И подтверждаем выбор нажатием на «OK».

Там в верхнем окошке пишем SDL2.lib; SDL2main.lib;.

Теперь возвращаемся в «Каталоги VC++» и выбираем «Каталоги библиотек». Нажав справа кнопку выбираем «Изменить…».

Теперь возвращаемся в «Каталоги VC++» и выбираем «Каталоги библиотек». Нажав справа кнопку выбираем «Изменить…».

Здесь нажимаем кнопку «Создать строку» и указываем путь до папки lib\x64 библиотеки SDL2. У меня это C:\Users\Vladimir\source\vclib\SDL2-2.0.14\lib\x64. И подтверждаем выбор нажатием на «OK».

Здесь нажимаем кнопку «Создать строку» и указываем путь до папки lib\x64 библиотеки SDL2.

Ещё, чтобы не открывалось консольное окно при запуске, необходимо сменить подсистему для сборки проекта с «Консоль (/SUBSYSTEM:CONSOLE)» на «Windows (/SUBSYSTEM:WINDOWS)». Для этого переходим в «Компоновщик» → «Система» → «Подсистема» и выбираем подсистему Windows.

Теперь окно свойств проекта можно закрыть.

Осталось добавить путь к бинарнику библиотеки SDL2.dll в переменную PATH Windows. Для открытия окна «Свойств системы» нужно нажать комбинацию клавиш «Win + Pause». А в нём выбрать «Дополнительные параметры системы».

Для открытия окна «Свойств системы» нужно нажать комбинацию клавиш «Win + Pause». А в нём выбрать «Дополнительные параметры системы».

В окне «Свойства системы» нажимаем кнопку «Переменные среды…». Там выбираем переменную «Path» и нажимаем кнопку «Изменить…». В следующем окне нажимаем кнопку «Создать» и выбираем путь к файлу SDL2.dll. У меня это c:\Users\Vladimir\source\vclib\SDL2-2.0.14\lib\x64\. И подтверждаем выбор нажатием на «OK».

В окне «Свойства системы» нажимаем кнопку «Переменные среды…». Там выбираем переменную «Path» и нажимаем кнопку «Изменить…». В следующем окне нажимаем кнопку «Создать» и выбираем путь к файлу SDL2.dll.

Настройка завершена. Теперь настало время кода. Создаём новый элемент проекта.

Создаём новый элемент проекта.

Выбираем файл C++ (.cpp).

Выбираем файл C++ (.cpp).

Ниже представлен листинг базовой программы, которая будет инициализировать окно и обрабатывать события.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <SDL.h>

#define SCR_MULT 1
#define TEX_SIZE 512
#define TEX_DIMENSION TEX_SIZE * TEX_SIZE

SDL_Window* window;
SDL_Renderer* renderer;
SDL_Texture* texture;
SDL_Event event;

void* pixels;

void init(void)
{
}

void update(void)
{
}

void render(void)
{
}

int main(int argc, char* argv[])
{
	bool run = true;
	int pitch;

	window = SDL_CreateWindow("SDL2", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, TEX_SIZE * SCR_MULT, TEX_SIZE * SCR_MULT, 0);
	renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE | SDL_RENDERER_PRESENTVSYNC);
	texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_STREAMING, TEX_SIZE, TEX_SIZE);

	init();

	while (run)
	{
		SDL_LockTexture(texture, NULL, &pixels, &pitch);

		update();
		render();

		SDL_UnlockTexture(texture);

		SDL_RenderClear(renderer);
		SDL_RenderCopy(renderer, texture, NULL, NULL);
		SDL_RenderPresent(renderer);

		while (SDL_PollEvent(&event) != 0)
		{
			if (event.type == SDL_QUIT)
			{
				run = false;
			}
		}
	}

	SDL_DestroyTexture(texture);
	SDL_DestroyRenderer(renderer);
	SDL_DestroyWindow(window);
	SDL_Quit();

	return 0;
}

Нажимаем F7 для сборки проекта. Если всё было сделано правильно, то ошибок быть не должно. Затем нажимаем комбинацию Ctrl+F5 для запуска программы без отладки.

Затем нажимаем комбинацию Ctrl+F5 для запуска программы без отладки.

В последующих заметках на эту тему я буду добавлять всякое в методы init(), update() и render(). Рисовать дичь в текстуру и выводить её в окно. Будет весело.