От переводчика: данная статья является третьей в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти тут. Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинальную статью можно найти тут. Начнем.
Оглавление:
0.1 Вступление
1. Приступая к работе
2. Модуль System
3. Модуль Window
4. Модуль Graphics
5. Модуль Audio
6. Модуль Network
1. Приступая к работе
- SFML и Visual Studio
- SFML и Code::Blocks (MinGW)
- SFML и Linux
- SFML и Xcode (Mac OS X)
- Компиляция SFML с помощью CMake
2. Модуль System
3. Модуль Window
- Открытие и управление окнами
- Обработка событий
- Работа с клавиатурой, мышью и джойстиками
- Использование OpenGL
4. Модуль Graphics
- Рисование 2D объектов
- Спрайты и текстуры
- Текст и шрифты
- Формы
- Проектирование ваших собственных объектов с помощью массивов вершин
- Позиция, вращение, масштаб: преобразование объектов
- Добавление специальных эффектов с шейдерами
- Контроль 2D камеры и вида
5. Модуль Audio
- Проигрывание звуков и музыки
- Запись аудио
- Пользовательские потоки аудио
- Спатиализация: звуки в 3D
6. Модуль Network
- Коммуникация с использованием сокетов
- Использование и расширение пакетов
- Веб-запросы с помощью HTTP
- Передача файлов с помощью FTP
Вступление
Эта статья — первая, которую вам следует прочитать, если вы используете SFML на Linux. В ней будет рассказано, как настроить ваш проект.
Установка SFML
Существуют разные подходы к установке SFML на Linux:
- Установка из репозитария вашего дистрибутива
- Скачивание предкомпилированного SDK и копирование файлов вручную
- Получение исходного кода, сборка и установка
Первый вариант предпочтительнее. Если версия SFML, которую вы хотите установить, доступна в официальном репозитарии, то установите ее, использую пакетный менеджер вашей операционной системы. Например, в Debian вы должны сделать следующее:
sudo apt-get install libsfml-dev
Третий вариант требует больше работы: нужно удовлетворить все зависимости SFML. Убедитесь, что CMake установлен и выполните несколько команд. Результатом этого станет пакет, адаптированный для вашей системы. Если вы хотите пойти по этому пути, прочитайте статью о самостоятельной сборке SFML.
Наконец, второй вариант — отличный выбор для быстрой установки, если SFML не доступен в качестве официального пакета. Скачать SDK можно со страницы загрузки. Распакуйте его и скопируйте файлы в нужное место: либо в отдельный путь в вашей личной директории (например, /home/me/sfml), либо в стандартную директорию (например, /usr/local).
Компиляция программы, использующей SFML
В этой статье мы не будем говорить об интегрированных средах разработки, таких как Code::Blocks или Eclipse. Мы рассмотрим команды, необходимые для компиляции и компоновки в исполняемый файл, использующий SFML. Написание Makefile или настройка проекта в среде IDE выходит за рамки данной статьи. По данным темам достаточно материалов в интернете.
Если вы используете Code::Blocks, вы можете использовать статью о настройке Code::Blocks для ОС Windows; большая часть указаний должна подойти и для Linux. Вы можете не указывать компилятору и компоновщику где искать заголовочные файлы и библиотеки, если вы установили SFML по стандартному пути.
Создайте файл с исходным кодом. В этой статье мы назовем его «main.cpp». Поместите следующий код в файл main.cpp:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
Теперь давайте скомпилируем его:
g++ -c main.cpp
В случае, если SFML установлен по нестандартному пути, вам необходимо сообщить компилятору, где найти заголовочные файлы SFML (файлы с расширением .hpp):
g++ -c main.cpp -I<путь-к-установке-SFML>/include
Тут <путь-к-установке-SFML> — директория, в которую вы скопировали SFML. Например /home/me/sfml.
Затем необходимо связать скомпилированный файл с библиотекой SFML для того, чтобы получить итоговый исполняемый файл. SFML состоит из пяти модулей: system, window, graphics, audio и network и библиотек для каждого из них. Что бы прокомпоновать ваше приложение с библиотекой SFML, вы должны добавить опцию "-lsfml-xxx" к команде компоновки. Например, "-lsfml-graphics" для модуля graphics (префикс «lib» и расширение ".so" библиотеки должны быть опущены).
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
Если вы установили SFML по нестандартному пути, вам необходимо сообщить компоновщику, где найти библиотеки SFML (файлы с расширением .so).
g++ main.o -o sfml-app -L<путь-к-установке-SFML>/lib -lsfml-graphics -lsfml-window -lsfml-system
Теперь мы можем запустить собранную программу:
./sfml-app
Если SFML установлен по нестандартному пути, вам необходимо сообщить динамическому компоновщику, где найти библиотеки SFML, определив переменную окружения LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=<sfml-install-path>/lib && ./sfml-app
Запустите программу, и, если все было сделано правильно, вы должны увидеть это:
Следующая статья: SFML и Xcode (Mac OS X)
Комментарии (7)
kesn
13.03.2016 12:36Вот неужели есть кодеры, которые решили что-то написать под sfml и не знают английского?
HighMem
13.03.2016 12:48По той же SDL литературы много (на русском). По SFML я не нашел ни одного более-менее полного обучающего курса на хабре(есть вот этот сайт, но лично мне спокойнее на душе, когда я читаю официальную документацию). Есть лишь отдельные статьи, которые не обьясняют как работать с этой библиотекой. Вот я и решил перевести официальную документацию.
Мне очень нравится SFML, как по мне, так она куда более понятна и красива, нежели SDL. Так что еще одна цель данных переводов — пиар библиотеки. К тому же я хочу подтянуть свой английский и свои знания по библиотеке.
Bombus
Пожалуйста не заставляйте зашедших читать половину статьи или бегать по ссылкам в поисках указания назначения продукта. И в этой статье и в предыдущей много раз повторяется название продукта, но для новичка не понятно про что идет речь. Одной ремарки о назначении было бы достаточно.
HighMem
В первой статье в начале было было написано про то, чем является SFML и зачем он нужен
Bombus
Согласитесь, никто не давал обязательств быть ознакомленым с первой статьей. Т.е. читатель вполне может зайти на Хабр после перерыва, достаточно двух-трех слов в начале о назначении проекта. Ничего критичного, просто пожелание.
HighMem
Окей. Я согласен. Сейчас сделаю.
HighMem
UPD: в новых статьях буду указывать ссылку на википедию. сейчас отредактирую старые