Звук в игре (мультимедиа, С++)
Что прочитать перед этим материалом
Звук в игре - одна из основных неотъемлемых составляющих, добавляющая реалистичности, необходимая для полноты самого процесса. Очень важно, чтобы звук присутствовал.
В этом уроке вы познакомитесь с базовым кодом для воспроизведения звуковых файлов с помощью библиотеки Audiere.
Audiere - это простая и удобная, кроссплатформенная, высокоуровневая библиотека для воспроизведения звуковых файлов. Она отлично подойдет для простых игр, однако для более интересных трехмерных игр нужны 3D-эффекты звука, которые отсутствуют в выбранной библиотеке.
Audiere может воспроизводить следующие типы файлов:
- Ogg (Vorbis)
- MP3
- несжатый WAV
- FLAC
- AIFF
- MOD
- S3M
- XM
- IT
Сначала необходимо загрузить саму библиотеку:
Скачайте (Windows) и установите в SDK или используйте ее локально.
Пользователи Linux должны установить Audiere с репозитория, ну или собрать из исходников.
Пользователи Ubuntu могут воспользоваться подсказкой с данного скриншота:

Теперь приступим непосредственно к программированию.
Здесь показан пример, просто демонстрирующий возможности библиотеки.
Код:
#include <string> // подключаем заголовочные файлы
#include <iostream>
using namespace std; // включаем использование пространства имен
#include <audiere.h>
using namespace audiere;
int main(int argc, char **argv)
{
string filename; // Создаем строку которая будет содержать путь к файлу
cout << "Enter the filename "; // Запрашиваем путь к файлу
cin >> filename; // Вводим строку
AudioDevicePtr device = OpenDevice(); // Открываем аудио устройство
OutputStreamPtr sound(OpenSound(device, filename.c_str(), false)); // Открываем аудио поток.
//Первый параметр OpenSound - устройство, второй путь в C строке(const char *filename),
//третий параметр указывает, воспроизводить ли в потоке
sound->play(); // воспроизводим поток
sound->setRepeat(true); // Включаем повторение
sound->setVolume(1.0f); // Устанавливаем громкость
int i;
cin>>i; // Ожидаем ввода
return 0;
}
Итак, код готов, пора настроить линкер.
Вот скриншот, подсказывающий, как пролинковать в Code::Blocks.

К сожалению, как пролинковать в другой IDE, я не могу продемонстрировать.
Вот здесь можно найти, как компилить и линковать в Linux.
Также можно воспользоваться этим макросом (Windows):
Код:
#pragma comment(lib, "audiere.lib")
После компиляции и запуска вводим полный путь к файлу. Аудио воспроизводится.
Обратите внимание! Инициализация устройства (device) должна производиться один раз в начале работы приложения, иначе производительность может сильно упасть.