Pull to refresh

1.3 SFML и Linux

Programming *C++ *Game development *
Translation
Tutorial
Original author: Laurent Gomila


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

Оглавление:
0.1 Вступление

1. Приступая к работе

  1. SFML и Visual Studio
  2. SFML и Code::Blocks (MinGW)
  3. SFML и Linux
  4. SFML и Xcode (Mac OS X)
  5. Компиляция SFML с помощью CMake

2. Модуль System

  1. Обработка времени
  2. Потоки
  3. Работа с пользовательскими потоками данных

3. Модуль Window

  1. Открытие и управление окнами
  2. Обработка событий
  3. Работа с клавиатурой, мышью и джойстиками
  4. Использование OpenGL

4. Модуль Graphics

  1. Рисование 2D объектов
  2. Спрайты и текстуры
  3. Текст и шрифты
  4. Формы
  5. Проектирование ваших собственных объектов с помощью массивов вершин
  6. Позиция, вращение, масштаб: преобразование объектов
  7. Добавление специальных эффектов с шейдерами
  8. Контроль 2D камеры и вида

5. Модуль Audio

  1. Проигрывание звуков и музыки
  2. Запись аудио
  3. Пользовательские потоки аудио
  4. Спатиализация: звуки в 3D

6. Модуль Network

  1. Коммуникация с использованием сокетов
  2. Использование и расширение пакетов
  3. Веб-запросы с помощью HTTP
  4. Передача файлов с помощью 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)
Tags:
Hubs:
Total votes 14: ↑11 and ↓3 +8
Views 20K
Comments Comments 7