1.1 SFML та Visual Studio

visual

Бібліотека SFML надає простий інтерфейс для різних компонентів вашого комп'ютера, щоб полегшити розробку ігор та мультимедійних програм. Вона складається з п'яти модулів: system, window, graphics, audio та network.

Використовуючи SFML, ваш додаток може бути скомпільований та запущений на найбільш поширених платформах: Windows, Linux, Mac OS X (планується підтримка Android та IOS).

Попередньо скомпільовані SDK для вашої ОС доступні на сторінці завантаження.

SFML офіційно підтримує C та .NET. Також завдяки своїй активній спільноті вона доступна багатьма іншими мовами, такими як Java, Ruby, Python, Go та ін.

1. Приступаючи до роботи

  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

Для початку вам необхідно завантажити SFML SDK зі сторінки завантаження.

Завантажений пакет повинен відповідати вашій версії Visual C++. Наприклад, бібліотека, скомпільована за допомогою VC++ 10 (Visual Studio 2010), не буде сумісна з VC++ 12 (Visual Studio 2013). Якщо ви не знайдете на сторінці завантаження пакет SFML,скомпілюваний для вашої версії Visual C++, вам доведеться зібрати SFML самостійно.

Далі ви повинні розпакувати архів із SFML у будь-яку зручну для вас директорію. Копіювати заголовні файли та бібліотеки у вашу установку Visual Studio не рекомендується. Краще тримати бібліотеки окремо, особливо якщо ви маєте намір використовувати кілька версій однієї бібліотеки або кілька компіляторів.

Створення та конфігурування проекту SFML

Перше, що вам необхідно зробити, це вибрати тип створюваного проекту: ви повинні вибрати Win32 application. Майстер запропонує вам кілька опцій для налаштування проекту: виберіть "Console application" у випадку, якщо вам потрібна консоль, або "Windows application" у протилежному випадку. Виберіть "Empty project", якщо вам не потрібен автоматично згенерований код.

Створіть файл main.cpp та додайте його до проекту. Цим ви застосуєте налаштування C++ (інакше Visual Studio не знатиме, яку мову ми будемо використовувати для даного проекту). Вміст файлу main.cpp буде наведено нижче.

Тепер вам необхідно вказати компілятору, де шукати заголовні файли (файли з розширенням .hpp) та компонувальнику, де шукати бібліотеки SFML (файли з розширенням .lib).

Додайте до властивостей проекту наступне:

  • Шлях до заголовкових файлів SFML (/include) у C/C++ » General » Additional Include Directories
  • Шлях до бібліотек SFML ( /lib) у Linker » General » Additional Library Directories
Ці шляхи збігаються для конфігурацій Debug і Release, тому ви можете встановити їх глобально для вашого проекту («All configurations»).

studio

Наступним кроком є ​​компонування вашої програми з бібліотеками SFML (файли з розширенням .lib). SFML складається з п'ятимодулів (system, window, graphics, network і audio) та бібліотек кожного з них. Бібліотеки повинні бути додані у властивості проекту Linker » Input » Additional Dependencies. Додайте бібліотеки SFML, яких ви потребуєте, наприклад: sfml-graphics.lib, sfml-window.lib і sfml-system.lib.

Важливо вказати бібліотеки, які відповідають конфігурації: sfml-xxx-d.lib для Debug і sfml-xxx.lib для Release, інакше можуть виникнути помилки.

Наведені вище налаштування дозволять вам скомпонувати ваш проект з динамічною версією SFML, для якої потрібні DLL файли. Якщо ви хочете безпосередньо інтегрувати SFML у файл, що виконується, а не використовувати компонування з динамічною бібліотекою, ви повинні скомпонувати статичну версію бібліотеки. Статичні бібліотеки SFML мають суфікс "-s": "sfml-xxx-s-d.lib" для конфігурації Debug та "sfml-xxx-s.lib" для Release.

Також необхідно визначити макрос SFML_STATIC в опціях препроцесора вашого проекту.

visual

Починаючи з SFML 2.2, при статичній компонуванні вам також необхідно скомпонувати всі залежності SFML. Це означає, що якщо, наприклад, ви скомпонуєте sfml-window-s.lib або sfml-window-s-d.lib, вам також доведеться скомпонувати opengl32.lib, winmm.lib та gdi32.lib. Деякі з цих бібліотек, можливо, вже перераховані в розділі Inherited values, але додавання їх не повинно викликати будь-яких проблем.

У таблиці нижче представлені залежності для кожного модуля, додайте -d якщо ви хочете скомпонувати бібліотеку SFML Debug:

МодульЗалежно
sfml-graphics-s.lib
  • sfml-window-s.lib
  • sfml-system-s.lib
  • opengl32.lib
  • freetype.lib
  • jpeg.lib
sfml-window-s.lib
  • sfml-system-s.lib
  • opengl32.lib
  • winmm.lib
  • gdi32.lib
sfml-audio-s.lib
  • sfml-system-s.lib
  • openal32.lib
  • flac.lib
  • vorbisenc.lib
  • vorbisfile.lib
  • vorbis.lib
  • ogg.lib
sfml-network-s.lib
  • sfml-system-s.lib
  • ws2_32.lib
sfml-system-s.lib
  • winmm.lib
З таблиці ви могли помітити, що одні модулі SFML можуть залежати від інших, наприклад, sfml-graphics-s.lib залежить від sfml-window-s.lib та sfml-system-s.lib. Якщо ви робите статичне компонування бібліотеки SFML, будьте впевнені, що всі залежності з ланцюжка залежностей були задоволені. Якщо одна із залежностей відсутня, ви отримаєте помилку компонувальника.

Якщо ви трохи заплуталися, не хвилюйтеся, для початківця абсолютно нормально бути перевантаженим всією цією інформацією про статичне зв'язування. Якщо у вас щось не вийде з першого разу, ви можете спробувати ще раз маючи на увазі все вищесказане. Якщо у вас все ж таки виникнуть труднощі зі статичним зв'язуванням, ви можете спробувати пошукати рішення у розділі FAQ або на форумі.

Якщо ви не знаєте чим відрізняються динамічні (також звані загальними) та статичні бібліотеки та який тип бібліотек використовувати, ви можете знайти більше інформації в інтернеті. На цю тему є безліч хороших статей/блогів/постів.

Ваш проект готовий, давайте напишемо трохи коду, щоб перевірити, що все працює правильно. Помістіть наступний код у файл main.cpp:

Якщо при створенні проекту ви вибрали опцію Windows application, то точкою входу у вашу програму повинна бути функція WinMain замість main. Так як цеспецифіка Windows, ваш код не компілюватиметься на Linux або Mac OS X. SFML надає спосіб зберегти стандартною точкою входу «main» у тому випадку, якщо ви скомпонуєте свій проект з модулем sfml-main («sfml-main-d.lib» для Debug, "sfml-main.lib" для Release) таким же способом, яким ви скомпонували sfml-graphics, sfml-window та sfml-system.

Тепер скомпілюйте проект, і, якщо ви скомпонували вашу програму з динамічною версією SFML, не забудьте скопіювати файли з розширенням .DLL (вони розташовані в /bin) в директорію, в якій розташований файл вашої програми. Запустіть програму, і якщо все було зроблено правильно, ви повинні побачити це:

visual

Якщо ви використовуєте модуль sfml-audio (незалежно від статичну або динамічну його версію), ви також повинні скопіювати зовнішню dll бібліотеку OpenAL32.dll. Цей файл також можна знайти в директорії /bin.