Привет всем
Начал тут знакомиться с библиотекой FMOD, решил попутно делиться опытом с коллегами, можь кому и интересно будет..
Эта часть, как сказал
Рома Мик,
здесьАвтор: Рома Мик
Дата: 22.03.05
:
Действительно полезная статья для тех, кому некогда самому набивать все шишки.
Читаем..
Введение
Не секрет, что одной из основных составляющих хорошей игры является музыка и звук. Кажется бредовой мысль о игре без звукового сопровождения, не правда ли?
Однако, стандартными средствами Win32Api очень сложно воспроизвести звук формата MP3, или, набирающего популярность OGG. Кроме того, в 3D шутерах возникает необходимость в 3D-звуке, который также, очень трудно реализовать.
Некоторые пытаются использовать DirectMusic, но он не предоставляет большого ассортимента средств и полностью ограничен платформой Windows, что может быть и не так уж важно для программистов DirectX'а, но может стать стеной для тех кто хочет портировать свои программы на другие платформы...
И тут на помощь, приходят сторонние библиотеки, наподобие FMOD. Про неё я собственно и поведу рассказ сегодня.
FMOD поддерживает популярные сегодня форматы записи звука: midi, mp3, ogg vorbis, wma, aiff; позволяет записывать звук, работать с интернет-потоками, риппинг дисков, MMX, хардварная акселлерация EAX 2&3 и многое другое...
Список поддерживаемых платформ совсем нехилый: Windows, Linux, Macintosh, GameCube, PS2 и XBox! Из языков программирования, FMOD поддерживает: C++, C, Delphi и VB.
Из недостатков я хотел бы подчеркнуть: процедурное программирование и неподдерживающаяся Java.
Установка
Я надеюсь, вы уже подобрали отвисшую челюсть, так что я могу как-бы продолжать.. Официальный сайт проекта —
http://fmod.org. Смело шагаем по адресу —
http://fmod.org/ifmoddownload.html, выбираем нужный дистрибутив в зависимости от вашей операционки и качаем..
Скачали? Хорошо, продолжим.. Я выбрал Windows дистрибутив, надеюсь Linux-девелоперы смогут проложить аналогии и установить FMOD. Кроме того, я буду использовать, не Delphi, как могли подумать некоторые, а C++ и компилятор VC7.1.
Я просто распаковал архив в временную директорию и начал раскидывать файлы по нужным папкам FAR'ом
. Для установки FMOD'а нам нужна его субдиректория по имени "api", там находятся библиотеки и хидэры.
В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию \fmod и скопируем туда всё содержимое api\inc.
Теперь скопируем нужный lib файл в директорию для lib файлов. У меня она находится в "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib". В директории фмода api\lib находится несколько файлов, из названий которых мы видим, что сабж поддерживает Watcom C(fmodwc.lib), LCC(fmodlcc.lib), Borland C(fmodbc.lib), 64-битный VC(fmod64vc.lib), просто VC(fmodvc.lib) и наконец g++(libfmod.a)
Сейчас нам нужен fmodvc.lib, который мы и копируем..
Последним шагом нам необходимо положить динамическую библиотеку api\fmod.dll (160 KB), которую нам предстоит таскать за собой.. Пока, давайте просто скопируем её в вашу системную директорию (у меня: F:\Windows\System32).
Начинаем кодировать
Теперь, можно попробовать FMOD на деле. Создайте Win32 Console Project (не забываем, у меня VC7.1) с параметром Empty, добавьте файл типа .cpp и скопируйте следующий код:
#include <iostream> // см. ниже
#include <fmod\fmod.h>//мы помним, мы положили в папку fmod
using namespace std;//заюзываем STL
#pragma comment(lib, "fmodvc.lib") /*подключаем fmodvc.lib, который, я надеюсь вы положили в правильную папку */
int main() //главная функция
{
FSOUND_Init(44100,32,0);
/*теперь пошёл FMOD, данной строчкой, мы даём понять что мы хотим звука частотой 44100 с максимум 32 каналами и нефига нам не нужно пока флагов */
FSOUND_STREAM *stream = //эдакий хендл на звуковой поток
FSOUND_Stream_Open("15-Roulette.mp3",FSOUND_2D,0,0); /*открывает файл
15-Roulette.mp3, который лежит в папке проекта, без 3D ламерства (шучу :) ) , третий параметр указывает что мы хотим проигрывать с самого начала, а
четвёртый обозначает длину желаемого проигрывания */
FSOUND_Stream_Play(0,stream); //проигрываем stream
int i;//см. ниже
cin>>i;//тут, я таким ламерским способом жду ввода пользователя
FSOUND_Stream_Close(stream); //когда юзер ввёл что-нибудь - закрываем
return 1; //и возвращаем системе что всё пучком
}
Всё должно работать
Завершение
Теперь про самое главное. В папке "место_куда_вы_распаковали_fmod\documentation" находится файл fmod.chm, который активно изображает из себя MSDN и предоставляет справку по всем функциям FMOD'a. С ним вам придется активно работать...
Ваши комментарии, пожелания или оскорбления
Автор не несёт уголовной ответственности за грамматические ошибки.