Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
Visual C

Добрый день и добро пожаловать. Это серия статей будет посвящена библиотеке 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.zip1.99 Мб

Комментарии

Temirlan аватар
Опубликовано Temirlan в 18. Февраль 2019 - 13:48.

ошибка : пишет не удается открыть источник файл "SDL.h"
Из за этой ошибки не удается запустить программу хотя я все сделал правильно , в результате код не работает :
//подключим SDL и stdio
#include
#include

//Некоторые константы нашего окна
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main(int argc, char* args[])
{ ....

НЕ РАБОТАЕТ ЭТА БИБЛИОТЕКА : SDL.h ?

Vasyakaktys аватар
Опубликовано Vasyakaktys в 3. Февраль 2018 - 12:07.

ошибка при запуске кода 0xc00000ba
Сделал всё как сказали но ошибка. В папке debag создал папку sdl2.dll но чёт не работает помогите кто шарит

mefest аватар
Опубликовано mefest в 30. Январь 2017 - 13:12.

Все верно, но так же необходимо зайти в:
Компоновщик -> Ввод -> Дополнительные зависимости
Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это:

SDL2.lib
SDL2main.lib
SDL2test.lib

Без этого не заработает. (MVS 2015)

Моисеенко Дмитрий аватар
Опубликовано Моисеенко Дмитрий в 28. Апрель 2017 - 9:21.

Спасибо, поправил

Моисеенко Дмитрий аватар
Опубликовано Моисеенко Дмитрий в 27. Апрель 2016 - 11:22.

Сейчас заметил, что в некоторых системах visual studio не создает ехе файл для пустого проекта. В таком случае просто создайте эту папку (debug) и поместите sdl2.dll туда