Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 99

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 229 >> Следующая

Для работы с этим типом данных даже определены макросы D3DVAL(val) ((float)val)
и
D3DVALP(va1. ргес) ((float)val)
позволяющие производить простое приведение типов (первый макрос) и приведение типов с указанной точностью (второй макрос). Забавно, что на данный момент эти два макроса абсолютно идентичны, то есть точность попросту игнорируется.
Второй тип, используемый в DirectSound, представляет собой либо трехмерный вектор, либо просто трехмерную координату точки. Он выглядит следующим образом:
typedef struct _D3DVECT0R { union {
D3DVALUE x;
D3DVALUE dvX;
}:
union {
D3DVALUE y;
D3DVALUE dvY;
}:
union {
D3DVALUE z:
D3DVALUE dvZ;
}:
} D3DVECT0R, *LPD3DVECT0R;
В зависимости от того, с вектором или точкой мы будем работать, можно использовать элементы объединений x,y,z или dvX,dvY,dvZ.
При определении координаты точки в пространстве в DirectSound используется декартова прямоугольная система координат. Ось X направлена вправо, а ось Y — вверх. В зависимости от того, куда направлена ось Z, различают левые и правые системы координат.
Если выполнять поворот вокруг оси Z так, чтобы большой палец левой руки указывал в направлении оси Z, то мы имеем дело с левой системой координат. Ну а если такой поворот выполняется правой рукой, то это правая система координат. Иными словами, в левой системе координат ось Z направлена от нас, а в правой системе — к нам. Графическое представление левой и правой систем координат показано на рис. 8.1 (взятом из DirectX SDK HELP):
Y Y
Рис. 8.1. Левая и правая системы координат
Трехмерные характеристики звукового буфера
231
DirectSound использует левую систему координат. В качестве единиц измерения для указания координат по умолчанию используются метры. В большинстве случаев этого более чем достаточно. Как изменить единицы измерения в случае необходимости, будет показано далее в этом уроке.
Обзор трехмерных возможностей DirectSound
Для создания трехмерной картины звучания в DirectSound используются два интерфейса, каждый из которых привязан к какому-либо звуковому буферу — IDirectSound3DBuffer (отвечает за трехмерные характеристики конкретного звукового буфера и может быть получен при помощи интерфейса для этого буфера) и IDirectSound3DListener (отвечает за трехмерные характеристики «слушателя»). Поскольку «слушатель» в системе должен быть один, то интерфейс для работы с ним получается, используя первичный звуковой буфер.
Конкретные особенности данных интерфейсов и методы работы с ними будут изложены при рассмотрении этих интерфейсов.
При работе с DirectSound в данный момент не используются стереофонические источники звука. DirectSound получает стереозвук по своим собственным алгоритмам. Поэтому, если источником для создания интерфейса IDirectSound3DBuffer послужил звуковой буфер, содержащий стереоданные, то прежде, чем выполнять вычисления, DirectSound произведет усреднение значений правого и левого каналов. Процесс усреднения требует определенного времени, следовательно, не стоит использовать в DirectSoun3D стереозвук без серьезных на то причин.
При каждом изменении трехмерных характеристик источника звука или «слушателя» DirectSound вынужден заново производить микширование определенных участков, поэтому практически для каждого метода интерфейсов IDirectSound 3DBuffer и IDirectSound3DListener предусмотрена возможность указания одного из двух способов установки нового параметра: немедленной (immediate) или отло-женной (deferred). Все немедленные установки применяются немедленно, а отложенные учитываются лишь после вызова метода IDirectSound3DListener::Commit DeferredSettings.
Microsoft представляет следующие соображения по загруженности процессора при обработке трехмерного звука: каждый звуковой буфер, для которого необходима трехмерная обработка, расходует приблизительно 6 процентов рабочего времени процессора Pentium 90. Необходимо рассчитывать количество звуковых буферов исходя из такой ориентировки.
Трехмерные характеристики звукового буфера
Для управления трехмерными характеристиками звукового буфера, представленного интерфейсом IDirectSoundBuffer, служит интерфейс IDirectSound3DBuffer. Ра-
232
Урок 8 • Программирование трехмерного звука
бота с этим интерфейсом происходит при помощи указателя, имеющего тип LPDIRECTS0UND3DBUFFER.
Для успешного получения интерфейса IDirectSound3DBuffer необходимо, чтобы при создании звукового буфера среди прочих был указан флаг DSBCAPS CTRL3D и не указан флаг DSBCAPS CTRLPAN, так как он конфликтует с предыдущим. Например, если pDS — инициализированный указатель на IDirectSound, a pWave — указатель на объект класса CMappedWave для работы со звуковым файлом, то возможное решение выглядит так:
LPDIRECTSOUNDBUFFER pDSBuffer = NULL;
HRESULT hRet;
DSBUFFERDESC dsbd;
ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) ); dsbd.dwSize - sizeof(DSBUFFERDESC);
dsbd.dwFlags - DSBCAPS_STATIC|DSBCAPS_CTRL3D| DSBCAPS_GETCURRENTP0SITI0N2| DSBCAPSGLOBALFOCUS;
dsbd.dwBufferBytes * pWave•>GetWaveSize(); dsbd.lpwfxFormat - pWave->GetWaveHeader(); dsbd. gui d3DAl gori thm - DS3DALG_N0_V I REALIZATION;
Предыдущая << 1 .. 93 94 95 96 97 98 < 99 > 100 101 102 103 104 105 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.