Microsoft DirectX 2

         

DirectSound


Программирование для быстродействующих прикладных программ и игр требует эффективного и динамичного звука. Microsoft обеспечивает два метода для достижения этого: MIDI потоки и DirectSound. MIDI потоки, фактически, часть мультимедиа  интерфейса программирования прикладной программы Windows 95. Они посылают MIDI сообщения системе, которая затем эффективно интегрирует их с процессами. Для большего количества информации относительно MIDI потоков, см. документацию, включенную с Win32 SDK.

DirectSound осуществляет новую модель для воспроизведения в цифровой форме звуков и для смешивания различных источников. Как и другие объектные классы в DirectX 2 SDK, DirectSound использует аппаратные средства всякий раз, когда это возможно и эмулирует аппаратные особенности в программном обеспечении, когда эта особенность не представлена в аппаратных средствах. Вы можете сделать запрос аппаратных возможностей во время выполнения, чтобы определить самое лучшее решение для любой данной конфигурации персонального компьютера.

DirectSound сформирован на com-основанных интерфейсах IDirectSound и IDirectSoundBuffer, и расширяем к другим интерфейсам. Для большого количества информации относительно COM концепций, см. Модель компоенентных объектов.

Объект DirectSound представляет звуковую плату и различные атрибуты. Объект DirectSoundBuffer создан, используя метод DirectSound:: CreateSoundBuffer объекта IDirectSound  и представляет собой буфер, содержащий звуковые данные. Может существовать несколько объектов DirectSoundBuffer и смешиваться вместе в основной объект DirectSoundBuffer. DirectSound буферы используются, чтобы начинать, останавливать, и приостанавливать звуковое воспроизведение, и устанавливать атрибуты типа частоты, формата, и так далее.

В зависимости от типа платы, DirectSound буферы могут существовать в аппаратных средствах как встроенная оперативная память, память волновой таблицы, канал прямого доступа в память (DMA) , или действительный буфер (для звуковой платы основанной на портах ввода\вывода ). Где не имеется никакой аппаратной реализации буфера DirectSound, будет производиться эмуляция в памяти системы.

Основной буфер используется для смешивания звуков из вторичных буферов, но к нему можно обращаться непосредственно для произвольного смешивания или других специальных действий. (Использование приводит к блокировке основного буфера, и влечет за собой закрытие всего доступа к звуковым аппаратным средствам из других источников).

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

Вторичные буферы могут также проигрывать звуки размером больше чем доступная звуковая буферная память. Когда требуется проиграть звук, который больше чем буфер, вторичный буфер служит как очередь, которая хранит части звука.


Хотя имеются несколько видимых внешних различий между DirectSound в Game SDK и DirectSound в DirectX 2 SDK были сделаны значительные внутренние усовершенствования. Краткий список некоторых из этих различий:

Усовершенствования в  коде волновой эмуляции, используемому, когда никакой драйвер устройства не доступен, поддержка волновых драйверов работала неправильно.

Изменения  управления фокусом звука.. Эти изменения не имеют никаких различий к большинству игр. Они были необходимы для поддержки out-of -proc (exe сервер) объекта COM, и требований ActiveX™ .

Был добавлен флажок DSBCAPS_STICKYFOCUS . Этот флажок может быть определен в методе IDirectSound:: CreateSoundBuffer, чтобы изменить фокус поведения буфера звуков.



Содержание раздела