Share via


개인 Surface 데이터(Direct3D 9)

모든 종류의 애플리케이션 관련 데이터를 표면과 함께 저장할 수 있습니다. 예를 들어 게임의 지도를 나타내는 표면에 지형에 대한 정보가 포함될 수 있습니다.

표면에는 둘 이상의 프라이빗 데이터 버퍼가 있을 수 있습니다. 각 버퍼는 데이터를 표면에 연결할 때 제공하는 GUID로 식별됩니다.

개인 표면 데이터를 저장하려면 SetPrivateData를 사용하여 원본 버퍼에 대한 포인터, 데이터 크기 및 데이터에 대한 애플리케이션 정의 GUID를 전달합니다. 필요에 따라 원본 데이터는 COM 개체의 형태로 존재할 수 있습니다. 이 경우 개체의 IUnknown 인터페이스 포인터에 포인터를 전달하고 D3DSPD_IUNKNOWNPOINTER 플래그를 설정합니다.

SetPrivateData는 데이터에 대한 내부 버퍼를 할당하고 복사합니다. 그런 다음 원본 버퍼 또는 개체를 안전하게 해제할 수 있습니다. 내부 버퍼 또는 인터페이스 참조는 FreePrivateData가 호출될 때 해제됩니다. 이는 표면이 해제되면 자동으로 발생합니다.

표면에 대한 개인 데이터를 검색하려면 올바른 크기의 버퍼를 할당한 다음 GetPrivateData 메서드를 호출하여 데이터에 할당된 GUID를 전달해야 합니다. 이 버퍼에 사용하는 동적 메모리를 해제해야 합니다. 데이터가 COM 개체인 경우 이 메서드는 IUnknown 포인터를 검색합니다.

할당할 버퍼의 크기를 모르는 경우 먼저 pSizeOfData에서 0으로 GetPrivateData를 호출합니다. 메서드가 D3DERR_MOREDATA 실패하면 버퍼에 필요한 바이트 수를 반환합니다.

Direct3D Surface