DirectMusic DirectMusic 의 사용법 오디오 데이터의 로드   [목차열람] [주소복사] [슬롯비우기]
오디오 데이터의 로드
 
Microsoft DirectX 9.0

오디오 데이터의 로드

DirectMusic 개체의 상당수는, 퍼포먼스에 짜넣기 전에, 파일 또는 리소스로부터 로드해야 한다. 이러한 개체의 열거 및 로드를 관리하려면 ,IDirectMusicLoader8 인터페이스를 사용한다. 또, 로드가 한 번에 끝나도록(듯이) 개체를 캐쉬하기 위해서도, 이 인터페이스를 사용한다.

주  신뢰할 수 없는 소스로부터 데이터를 로드해서는 안 된다. DirectMusic 데이터 파일을 로드하면 개체가 생성 되어 리소스의 과잉인 소비에 의해 퍼포먼스의 저하나 시스템 장해가 발생할 가능성이 있다.

애플리케이션을 사용할 수 있는 로더의 인스턴스는, 한 번에 1 개 뿐이다. 1 개의 글로벌 로더 개체를 생성 해, 로드가 모두 종료할 때까지 개체를 릴리즈 하지 않게 한다. 이 방법에 의해, 개체가 효과적으로 검색 및 캐싱 된다.

개체를 메모리 또는 스트림으로부터 로드하는 경우에는, 애플리케이션은, 로더가 릴리즈 될 때까지 데이터에 액세스 해서는 안 된다. 캐쉬 및 다른 내부 메카니즘이기 때문에, 로더가 다음에 데이터에 액세스를 시도하는 경우가 있다. 새로운 데이터를 로드하려면 , 항상, 새로운 버퍼를 할당하는지, 또는 새로운 스트림을 생성 한다.

DirectMusic 에 있어서의 IStream 의 처리이, 소스로부터의 데이터를 스트리밍 한다. 데이터의 해석은,IPersistStream 의 처리을 통해, 다양한 개체 자신에 의해 처리된다. 표준적인 DirectMusic 데이터만을 취급하는 경우는, 이러한 인터페이스를 직접 사용할 필요는 없다.

다른 개체에 의해 참조되는 개체의 로드는, 투과적으로 처리된다. 예를 들어, DirectMusic Producer 파일로부터 로드 되는 세그먼트(segment)에, 다른 파일에 있는 WAV 사운드에의 참조가 포함되어 있는 것으로 한다. 세그먼트(segment)에 있어서의 IPersistStream::Load 의 처리은, 참조를 찾아내면 스트림 개체로부터 IDirectMusicGetLoader8 인터페이스를 얻어온다. 이 인터페이스를 사용해, 로더 개체의 포인터를 얻어온다. 다음에,IDirectMusicLoader8::GetObject 를 호출해, WAV 사운드를 로드한다.

로더의 사용법의 더 자세한 정보는, 다음 주제를 참조할것.

참조

↑TOP