DirectShow 보유 멀티미디어 스트리밍 멀티미디어 스트리밍 인터페이스 IDirectDraw [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
IDirectDraw 인터페이스는, DirectShow 멀티미디어 스트리밍 API 로 사용되는 DirectDraw 개체상에서 공개되지만, 편의상 DirectShow 의 문서에 포함되어 있다.
DirectDraw 개체는 디스플레이 하드웨어를 나타낸다. 이 개체가 인스턴스화하는 디스플레이 장치가 하드웨어 가속화 기능을 가지고 있는 경우, 이 개체는 하드웨어에 의해 액셀러레이트 된다. DirectDraw 개체에 의해 생성 할 수 있는 개체는, DirectDrawSurface 개체, DirectDrawPalette 개체, DirectDrawClipper 개체의 3 개이다.
DirectDraw 개체는, 생성 하는 모든 개체를 관리한다. 이 개체는, 1차 표면이 8 bpp 모드인 경우의 디폴트의 팔레트, 디폴트의 컬러 키값, 하드웨어의 디스플레이 모드를 제어한다. 또, 할당하고 끝난 리소스와 지금부터 할당하는 리소스도 식별된다.
디스플레이 모드의 변경은, DirectDraw 의 중요한 기능의 1 개이다. 디스플레이 모드의 해상도는, 다른 애플리케이션이 배타적으로 DirectDraw 에 액세스 하고 있지 않는 한, 언제라도 변경할 수 있다. 디스플레이 모드의 픽셀 깊이는, 변경을 요구하고 있는 애플리케이션이 DirectDraw 개체에 배타적으로 액세스 하고 있는 경우에만 변경할 수 있다. 디스플레이 모드를 변경 하면, 모든 DirectDrawSurface 개체는 표면 메모리를 잃어, 기능하지 않게 된다. 이러한 표면의 메모리는,Restore 메서드를 사용해 재할인 맞히고 할 필요가 있다.
IUnknown 로부터 계승한 메서드에 가세해,IDirectDraw 인터페이스는 다음의 메서드를 공개한다.
메서드 | 설명 |
Compact | 아직 처리되지 않다. |
CreateClipper | DirectDrawClipper 개체를 생성 한다. |
CreatePalette | 이 DirectDraw 개체에 대한 DirectDrawPalette 개체를 생성 한다. |
CreateSurface | 이 DirectDraw 개체에 대한 DirectDrawSurface 개체를 생성 한다. |
DuplicateSurface | DirectDrawSurface 개체를 복제한다. |
EnumDisplayModes | 하드웨어가 DirectDraw 개체를 개입시켜 공개하는 디스플레이 모드 가운데, 제공된 표면 기술과 호환성이 있는 모든 디스플레이 모드를 열거한다. |
EnumSurfaces | 지정된 검색 기준에 맞는, 기존의 또는 가능한 표면을 모두 열거한다. |
FlipToGDISurface | GDI 가 기입하는 표면을 1차 표면으로 한다. |
GetCaps | 장치 드라이버 (하드웨어)나 하드웨어 에뮬레이션 계층 (HEL)의 미처리 (미해결이 아니다) 능력을 저장 한다. |
GetDisplayMode | 현재의 디스플레이 모드를 돌려준다. |
GetFourCCCodes | DirectDraw 개체에 의해 지원 되는 FourCC 코드를 얻어온다. |
GetGDISurface | GDI 가 1차 표면으로서 처리하는 표면 메모리를 현재 나타내고 있는 DirectDrawSurface 개체를 돌려준다. |
GetMonitorFrequency | DirectDraw 개체가 동작하는 모니터의 주파수를 돌려준다. |
GetScanLine | 모니터상에서 현재 드로잉(Drawing) 되고 있는 주사선을 돌려준다. |
GetVerticalBlankStatus | 수직 동기 상태를 돌려준다. |
Initialize | DirectDraw 개체를 초기화한다. |
RestoreDisplayMode | 1차 표면의 디스플레이 장치 하드웨어의 모드를,SetDisplayMode 메서드가 변경하기 전 상태에 리셋 한다. |
SetCooperativeLevel | 애플리케이션의 최상정도 동작을 결정한다. |
SetDisplayMode | 디스플레이 장치 하드웨어의 모드를 설정한다. 모드를 변경하기 전에,SetCooperativeLevel 를 사용해 배타 레벨의 액세스를 설정할 필요가 있다. |
WaitForVerticalBlank | 호출원이 수직 동기 간격과 동기 할 수 있도록(듯이) 한다. |