Программирование игр для Windows. Советы профессионала


Замечание - часть 8


ВЫХОД: АХ=0        Драйвер не поддерживает запись звука.

АХ=1        Режим записи звука установлен.

Функция № 21: Установка режима обратной записи DMA

Функция позволяет включить режим обратной записи DMA. В идеале было бы достаточно использовать функцию PostAudioPending. Однако большинство моделей звуковых карт не позволяют гладко проиграть две звуковые последовательности одну за другой. И хотя фирма Creative Labs уже продала свыше двух миллионов карт Sound Blaster без этого недостатка, другие звуковые платы по-прежнему не способны обеспечить ровную стыковку двух звуковых фрагментов. Единственный способ обойти данную проблему состоит в использовании метода обратной записи DMA. В идеале функция PostAudio Pending должна была бы автоматически использовать этот метод, но это заняло бы слишком много времени для изменения всех имеющихся драйверов. Метод, с помощью которогб DIGPAK поддерживает режим обратной записи, достаточно прямолинеен, но пока я придумываю что-нибудь получше, вы вполне можете им воспользоваться.

Посмотрев на демонстрационную программу PEND.C, вы увидите пример того, как вместо PostAudioPending используется метод обратной записи DMA в том случае, если это поддерживается звуковой картой. Вы можете свободно использовать этот подход к реализации двойной буферизации в своих программах.

Обычно во время воспроизведения музыкального фрагмента звуковая карта осуществляет прямой доступ в память, который прерывается программой по окончании воспроизведения звука. Такой метод используется для исполнения одного фрагмента за один раз и это является стандартным режимом для вызовов функций DIGPAK. При автоматической инициализации прямого доступа в память, по достижении конца звукового фрагмента контроллер прямого доступа в память немедленно возвращается в начало буфера; он никогда самостоятельно не заканчивает воспроизведение. Следовательно, если ваш фрагмент — это слово «Привет!» и вы инициировали прямой доступ в память, то будете слышать «Привет!» непрерывно до тех пор, пока не прервете воспроизведение.




Начало  Назад  Вперед



Книжный магазин