DirectSound DirectSound C/C++ 레퍼런스 DirectSound 의 구조체 DSBCAPS   [목차열람] [주소복사] [슬롯비우기]
DSBCAPS
 
Microsoft DirectX 9.0

DSBCAPS

DSBCAPS 구조체는, DirectSound 버퍼 개체의 능력을 기술한다. IDirectSoundBuffer8::GetCaps 메서드로 사용한다.

구문

typedef struct { 
  DWORD  dwSize; 
  DWORD  dwFlags; 
  DWORD  dwBufferBytes; 
  DWORD  dwUnlockTransferRate; 
  DWORD  dwPlayCpuOverhead; 
} DSBCAPS, *LPDSBCAPS; 

typedef const DSBCAPS *LPCDSBCAPS;

멤버

dwSize

구조체의 사이즈 (바이트 단위). 구조체를 사용하기 전에, 이 멤버를 초기화해야 한다.

dwFlags

버퍼 개체의 능력을 지정하는 플래그. 다음 표로 나타나고 있는 값의 1 개 이상을 사용한다.

설명
DSBCAPS_CTRL3D 버퍼는 3D 컨트롤 능력을 갖추고 있다.
DSBCAPS_CTRLFREQUENCY 버퍼는 주파수 컨트롤 능력을 갖추고 있다.
DSBCAPS_CTRLFX 버퍼는 이펙트 처리를 지원 하고 있다.
DSBCAPS_CTRLPAN 버퍼는 팬 컨트롤 능력을 갖추고 있다.
DSBCAPS_CTRLVOLUME 버퍼는 음량 조절 능력을 갖추고 있다.
DSBCAPS_CTRLPOSITIONNOTIFY 버퍼는 위치 통지 능력을 갖추고 있다. 「DSBUFFERDESC 」의 「주의」를 참조.
DSBCAPS_GETCURRENTPOSITION2 IDirectSoundBuffer8::GetCurrentPosition 가 불려 가면 버퍼는 재생 커서의 새로운 동작을 사용한다. DirectSound 의 최초의 버전에서는, 에뮬레이트 된 사운드 카드 위에의 재생 커서는 실제의 재생 사운드보다 아득한 앞쪽에 있어, 쓰기 커서의 직후에 놓여져 있었다. 현재는, DSBCAPS_GETCURRENTPOSITION2 플래그를 지정 하면, 애플리케이션은 보다 정확한 재생 커서를 취득할 수 있다. 이 플래그를 지정하고 있지 않는 경우, 호환성을 유지하기 위해서(때문에) 과거의 동작이 유지된다. 이 플래그는, 에뮬레이트 된 장치에만 영향을 미친다. DirectSound 드라이버가 존재하는 경우는, DirectX 목의 버전에서도, DirectSound 의 재생 커서는 정확한 위치를 나타낸다.
DSBCAPS_GLOBALFOCUS 버퍼는 글로벌인 사운드 버퍼이다. 이 플래그를 설정 하면, 사용자가 다른 애플리케이션에 포커스를 이동해, 그 새로운 애플리케이션이 DirectSound 를 사용하는 경우에서도, DirectSound 를 사용하고 있는 애플리케이션은 계속해 그 버퍼를 재생할 수 있다. 1 개의 예외는, 협조 레벨로 DSSCL_WRITEPRIMARY 플래그를 설정한 DirectSound 애플리케이션에 포커스를 이동했을 경우이다. 이 경우, 다른 애플리케이션으로부터의 글로벌인 사운드는 들리지 않게 된다.
DSBCAPS_LOCDEFER 재생시, 또는 IDirectSoundBuffer8::AcquireResources 가 불려 갔을 때에, 버퍼는 하드웨어 또는 소프트웨어의 리소스에 할당할 수 있다.
DSBCAPS_LOCHARDWARE 버퍼는 하드웨어 믹싱을 사용한다.
DSBCAPS_LOCSOFTWARE 버퍼는 소프트웨어 메모리내에 있어, 소프트웨어 믹싱을 사용한다.
DSBCAPS_MUTE3DATMAXDISTANCE 사운드는, 최대 거리로 무음이 된다. 최대 거리를 넘으면 버퍼의 재생이 정지하므로, 프로세서 시간을 소비하지 않고 끝난다. 소프트웨어 버퍼 에 대해서만 적용된다.
DSBCAPS_PRIMARYBUFFER 버퍼는1차 버퍼 이다.
DSBCAPS_STATIC 버퍼는 온보드 하드웨어 메모리에 있다.
DSBCAPS_STICKYFOCUS 버퍼는 스틱키 포커스를 갖추고 있다. 사용자가 DirectSound 를 사용하지 않은 다른 애플리케이션으로 전환했을 경우, 버퍼는 계속해 소리를 낸다. 다만, 사용자가 다른 DirectSound 애플리케이션으로 전환했을 경우, 버퍼는 무음이 된다.

dwBufferBytes

이 버퍼의 사이즈 (바이트 단위).

dwUnlockTransferRate

IDirectSoundBuffer8::Unlock 을 호출했을 때에 데이터를 버퍼 메모리에 전송 하는 속도. 단위는 1 초 쯤의 킬로바이트수 (KB/초). 고성능의 애플리케이션은 이 값을 사용해,IDirectSoundBuffer8::Unlock 를 실행하기 위해서 필요한 시간을 결정할 수 있다. 시스템 메모리내에 배치되고 있는 소프트웨어 버퍼의 경우, 처리가 불필요해서 전송 속도는 매우 높다. 하드웨어 버퍼의 경우, 버퍼를 사운드 카드로 로드하지 않으면 안 될 가능성이 있으므로, 전송 속도는 보다 늦어질 가능성이 있다. 그 결과, 전송 속도가 제한되는 일이 있다.

dwPlayCpuOverhead

처리의 오버헤드. 사운드 버퍼를 믹싱 하기 위해서 필요한 메인 프로세서 사이클의 퍼센티지이다. 하드웨어 버퍼의 경우는, 사운드 장치가 믹싱을 실시하므로, 이 멤버는 0 이다. 소프트웨어 버퍼의 경우는, 이 멤버의 값은 버퍼 포맷과 시스템 프로세서의 속도에 의존한다.

주의

DSBCAPS 구조체는,IDirectSound8::CreateSoundBuffer 메서드에 건네지는 DSBUFFERDESC 구조체를 닮은 정보와 그 이외의 몇개의 추가 정보를 보관 유지하고 있다. 추가 정보로서는, 버퍼의 위치 (하드웨어 또는 소프트웨어)나, 몇개의 코스트 측정값 (버퍼가 하드웨어에 배치되고 있는 경우의 다운로드 시간, 소프트웨어로 버퍼를 믹싱 하는 경우는 재생 처리의 오버헤드 등)이 있다.

dwFlags 멤버는,DSBUFFERDESC 구조체로 사용되는 것과 같은 플래그를 저장 한다. 유일한 차이는,DSBCAPS 구조체에서는 버퍼의 장소에 응해 DSBCAPS_LOCHARDWARE 과 DSBCAPS_LOCSOFTWARE 의 어느 쪽인지가 지정되는 것이다. DSBUFFERDESC 구조체에서는 이러한 플래그는 옵션이며, 버퍼를 하드웨어와 소프트웨어의 어딘가에 강제적으로 배치하기 위해서 사용한다.

요건

  헤더:Dsound.h 로 선언.

참조

↑TOP