Звук в игре (мультимедиа, С++)

Блоговая публикация пользователя: Flashhell Эта публикация была перенесена из личного блога пользователя в общие разделы уровок сайта.

Звук в игре (мультимедиа, С++)

Звук в игре - одна из основных неотъемлемых составляющих, добавляющая реалистичности, необходимая для полноты самого процесса. Очень важно, чтобы звук присутствовал. В этом уроке вы познакомитесь с базовым кодом для воспроизведения звуковых файлов с помощью библиотеки Audiere.

Audiere - это простая и удобная, кроссплатформенная, высокоуровневая библиотека для воспроизведения звуковых файлов. Она отлично подойдет для простых игр, однако для более интересных трехмерных игр нужны 3D-эффекты звука, которые отсутствуют в выбранной библиотеке.

Audiere может воспроизводить следующие типы файлов:
  • Ogg (Vorbis)
  • MP3
  • несжатый WAV
  • FLAC
  • AIFF
  • MOD
  • S3M
  • XM
  • IT
Сначала необходимо загрузить саму библиотеку:

Скачайте (Windows) и установите в SDK или используйте ее локально.

Пользователи Linux должны установить Audiere с репозитория, ну или собрать из исходников.

Пользователи Ubuntu могут воспользоваться подсказкой с данного скриншота:
Уроки OpenGL различных тематик: Поиск Audiere в центре приложений Ubuntu Рисунок 1. Поиск Audiere в центре приложений Ubuntu.
Теперь приступим непосредственно к программированию.

Здесь показан пример, просто демонстрирующий возможности библиотеки.

Код:
/*http://esate.ru, Flashhell*/

#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.
Уроки OpenGL различных тематик: Настройки линка Рисунок 2. Настройки линка.
К сожалению, как пролинковать в другой IDE, я не могу продемонстрировать.

Вот здесь можно найти, как компилить и линковать в Linux.

Также можно воспользоваться этим макросом (Windows):

Код:
/*http://esate.ru, Flashhell*/

#pragma comment(lib, "audiere.lib")

После компиляции и запуска вводим полный путь к файлу. Аудио воспроизводится.

Обратите внимание! Инициализация устройства (device) должна производиться один раз в начале работы приложения, иначе производительность может сильно упасть.

Нет доступа к просмотру комментариев.

^