DirectSound DirectSound C++ 샘플 Play 3D Sound 샘플   [목차열람] [주소복사] [슬롯비우기]
Play 3D Sound 샘플
 
Microsoft DirectX 9.0

Play 3D Sound 샘플

설명

Play 3D Sound 샘플에서는, 3D 사운드 버퍼를 생성 하는 방법과 그 프로퍼티를 조작하는 방법을 나타낸다. 3D Audio 샘플과 유사하지만 이 샘플은 DirectSound API 만을 사용한다.

패스

소스:(SDK 루트) \Samples\C++\DirectSound\Play3DSound

실행 가능 파일:(SDK 루트) \Samples\C++\DirectSound\Bin

사용자가이드

[Sound File] 를 클릭해 WAV 파일을 로드한다. 사운드를 재생한다. 음원의 위치가 그래프상에 붉은 점으로써 나타난다. 이 그래프에서는, x 축이 왼쪽에서 오른쪽을 향해, z 축이 아래에서 위로 향하고 있다. 슬라이더를 사용해, 2 개의 좌표축 위에의 이동 범위를 변경한다.

청취자는 그래프의 중앙에 위치해, 디폴트의용을 적합하다. 디폴트의 방향은, z 축의 정의 방향, 즉 화면의 윗방향이다. 음원은 청취자의 좌우 전후로 이동해, 상하에는 이동하지 않는다.

윈도우의 중앙에 있는 슬라이더는, 청취자의 프로퍼티, 즉 글로벌 사운드 프로퍼티를 제어한다. [Defer Settings] 를 클릭 하면, 변경은, 다음에 [Apply Settings] 를 클릭할 때까지 적용되지 않는다.

프로그래밍 메모

3D 컨트롤을 사용하지 않고 간단하게 DirectSound 버퍼를 설정하는 방법의 예에 대해서는,Play Sound 샘플을 참조할것.

이 샘플은, 다음의 순서로 IDirectSound3DListener8 인터페이스를 얻어온다.

  1. DSBCAPS_CTRL3D 플래그 및 DSBCAPS_PRIMARYBUFFER 플래그를 포함한 DSBUFFERDESC 구조체로 버퍼를 기술한다.
  2. 버퍼 기술을 IDirectSound8::CreateSoundBuffer 에 건네준다. 이것에 의해, 3D 기능을 가지는 1차 버퍼가 생성 된다.
  3. QueryInterface 를 호출해 IDirectSound3DListener8 인터페이스를 얻어온다. 이 인터페이스는 글로벌 3D 프로퍼티를 제어한다.

이 샘플은, 다음의 순서로 IDirectSound3DBuffer8 인터페이스를 얻어온다.

  1. DSBUFFERDESC 구조체에 버퍼를 기술한다. 이 때, DSBCAPS_CTRL3D 기능의 플래그와 3D 가상화 알고리즘을 설정한다.
  2. 버퍼 기술을 IDirectSound8::CreateSoundBuffer 에 건네주어, 3D 기능을 가지는 2차 버퍼를 생성 한다.
  3. QueryInterface 를 호출해 IDirectSound3DBuffer8 인터페이스를 얻어온다. 이 인터페이스는, 그 버퍼를 사용해 재생되는 사운드의 3D 프로퍼티를 제어한다.

애플리케이션은,IDirectSound3DListener8::SetAllParameters 를 호출해 청취자의 파라미터를 설정한다. 청취자의 프로퍼티는,DS3DLISTENER 구조체에 기술되고 있다. 애플리케이션은,IDirectSound3DBuffer8::SetAllParameters 를 호출해 DS3DBUFFER 구조체를 건네주어, 음원의 위치를 설정한다.

파라미터를 설정 하면 DS3D_DEFERRED 플래그가 설정된다. 변경은,IDirectSound3DListener8::CommitDeferredSettings 가 불려 갔을 때에 반영된다. 이 메서드는, 버퍼와 청취자의 설정의 반영을 늦추어, DirectSound 에 의한 계산이 한 번에 끝나도록(듯이) 하고 있다.

참조

↑TOP