Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > структура WAVEFORMATEX


Автор: chaplin 16.10.2005, 21:28
Привет всем.
Я создаю программу с 3d-эффектами в DirectSound. Проблема в том, что не удается создать интерфейс IDirectSound3DListener и IDirectSound3DBuffer. Вот код:

Код

IDirectSound *DS;
IDirectSoundBuffer *DSBuffer;
IDirectSound3DBuffer *DS3DBuffer;
IDirectSound3DListener *DS3DListener;
IDirectSoundNotify *DSNotify;
WAVEFORMATEX wfx;
DSBUFFERDESC desc;
DSBPOSITIONNOTIFY dsp[1];
void *ptr;
DWORD size;
DWORD readed;
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 1;
wfx.nSamplesPerSec = 11025;
wfx.nBlockAlign = 1;
wfx.nAvgBytesPerSec = 11025;
wfx.wBitsPerSample = 8;
wfx.cbSize = 0;
DirectSoundCreate(Guid, &DS, NULL);
DS->SetCooperativeLevel(Handle, CLevel);
desc.dwSize = sizeof(desc);
desc.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLDEFAULT | DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STATIC;
desc.dwBufferBytes = BufferBytes;
desc.lpwfxFormat = &wfx;
desc.dwReserved = 0;
DS->CreateSoundBuffer(&desc, &DSBuffer, NULL);
if(FAILED(DSBuffer->QueryInterface(IID_IDirectSound3DBuffer, (void**) &DS3DBuffer))) MessageBoxA(NULL, "Не удается создать IDirectSound3DBuffer", "Ошибка", MB_OK + MB_ICONERROR);
if(FAILED(DSBuffer->QueryInterface(IID_IDirectSound3DListener, (void**) &DS3DListener)))MessageBoxA(NULL, "Не удается создать IDirectSound3DListener", "Ошибка", MB_OK + MB_ICONERROR);
if(FAILED(DSBuffer->QueryInterface(IID_IDirectSoundNotify, (void**) &DSNotify))) MessageBoxA(NULL, "Не удается создать IDirectSoundNotify", "Ошибка", MB_OK + MB_ICONERROR);


если химичить с WAVEFORMATEX, то иногда удается создать интерфейс IDirectSound3DBuffer, но с IDirectSound3DListener - глухо. Пробовал устанавливать значения структуры WAVEFORMATEX и до объявления в DSBUFFERDESC и после, одно и то же, при создании IDirectSound3DBuffer возвращает ошибку "Неверный параметр". Что надо сделать, чтобы параметр был верным? Компилятор использую BCB6.

Автор: chaplin 16.10.2005, 21:46
все, вник: IDirectSound3DListener работает только с первичными буфферами, а я походу создаю вторичный...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)