DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 표면 Private 표면 데이터   [목차열람] [주소복사] [슬롯비우기]
Private 표면 데이터
 
Microsoft DirectX 9.0

Private 표면 데이터


표면와 함께 모든 종류의 애플리케이션 고유 데이터를 저장 할 수 있다. 예를 들어, 게임의 맵을 나타내는 표면에, 지형 정보를 가지는 경우가 있다.

표면은, 1 개 혹은 복수의 Private 데이터 버퍼를 소유할 수 있다. 각 버퍼는, 표면에 데이터를 Attach 할 경우에 지정하는 글로벌 일의 식별자 (GUID)로 식별된다.

Private 표면 데이터를 저장 하려면 ,SetPrivateData 를 사용해, 전송원버퍼, 데이터의 사이즈, 데이터용으로 애플리케이션으로 정의한 GUID 의 포인터를 건네준다. 옵션으로서 전송원데이터는 구성 요소 개체 모델 (COM) 개체의 폼내에 존재할 수 있다. 이 경우, 개체의 IUnknown 인터페이스 포인터에 포인터를 건네주어, D3DSPD_IUNKNOWNPOINTER 플래그를 설정한다.

SetPrivateData 는 데이터에 대해서 내부 버퍼를 할당해 데이터를 복사 한다. 그 후로, 전송원버퍼 또는 개체를 안전하게 릴리즈 할 수 있다. 내부 버퍼 또는 인터페이스 참조는,FreePrivateData 의 호출시에 릴리즈 된다. 표면이 릴리즈 되면 이 처리는 자동적으로 행해진다.

표면에 대한 Private 데이터를 얻어오려면, 정확한 사이즈의 버퍼를 할당해 데이터에 할당된 GUID 를 건네주는 GetPrivateData 메서드를 호출해야 한다. 이 버퍼를 사용하는 모든 동적 메모리의 릴리즈에 대해서는, 각자 책임을 갖는다. 데이터가 COM 개체의 경우, 이 메서드는 IUnknown 포인터를 얻어온다.

할당하는 버퍼의 사이즈를 모르는 경우는, 최초로 pSizeOfData 를 제로로 해 GetPrivateData 를 호출한다. 이 메서드가 D3DERR_MOREDATA 로 실패 하면, 버퍼에 필요한 바이트수를 돌려준다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP