관련 색인이 없습니다. |
Microsoft DirectX 9.0 |
Microsoft® Direct3D® 는 아니고, 애플리케이션에서의 사용이 의도되고 있는 리소스와 데이터를 관련짓는다. 데이터는 값으로 건네받아 복수의 데이터 세트를 단일의 리소스와 관련지을 수가 있다.
구문
HRESULT SetPrivateData(
REFGUID refguid, const void *pData, DWORD SizeOfData, DWORD Flags );
파라미터
- refguid
- [in] 설정하는 Private 데이터를 식별하는 글로벌 일의 식별자에의 참조 (C++) 또는 주소 (C).
- pData
- [in] 리소스에 관련짓는 데이터가 저장 되고 있는 버퍼의 포인터.
- SizeOfData
- [in] pData 의 버퍼 사이즈 (바이트 단위).
- Flags
- [in] 건네받는 데이터형을 기술하는 값, 또는 리소스가 변경되었을 경우에 데이터를 무효로 할 필요가 있는 것을 애플리케이션에 나타내는 값.
- (none)
- 플래그를 지정하지 않는 경우, Direct3D 는 버퍼내의 데이터를 보관 유지하는 메모리를 할당해 새로운 버퍼에 데이터를 복사 한다. Direct3D 에 의해 할당할 수 있는 버퍼는, 적당 자동적으로 릴리즈 된다.
- D3DSPD_IUNKNOWN
- pData 의 데이터는 IUnknown 인터페이스의 포인터이다. SizeOfData 는,IUnknown 인터페이스 (sizeof(IUnknown*))의 포인터 사이즈로 설정할 필요가 있다. Direct3D 는 pData 를 개입시켜 IUnknown::AddRef 를, Private 데이터가 파기되는 경우는 IUnknown::Release 를 자동적으로 호출한다. 다음에 같은 GUID 로 IDirect3DBaseTexture9::SetPrivateData 를 호출하는지, 다음에 IDirect3DResource9::FreePrivateData 를 호출하는지, 또는 IDirect3D9 개체를 릴리즈 하면, Private 데이터는 파기된다. 상세 정보에 대해서는, 「주의」를 참조할것.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는, 다음의 몇개의 값을 돌려준다.
D3DERR_INVALIDCALL 메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다. E_OUTOFMEMORY Direct3D 가 호출을 완료하기 위한 충분한 메모리를 할당할 수가 없었다.
주의
Direct3D 는 pData 로 메모리를 관리하지 않는다. 이 버퍼가 동적으로 할당할 수 있었을 경우, 호출측의 책임으로 메모리를 릴리즈 한다.
참조
IDirect3DResource9::FreePrivateData ,IDirect3DBaseTexture9::FreePrivateData ,IDirect3DCubeTexture9::FreePrivateData ,IDirect3DTexture9::FreePrivateData ,IDirect3DVolumeTexture9::FreePrivateData ,IDirect3DIndexBuffer9::FreePrivateData ,IDirect3DVertexBuffer9::FreePrivateData ,IDirect3DResource9::GetPrivateData ,IDirect3DBaseTexture9::GetPrivateData ,IDirect3DCubeTexture9::GetPrivateData ,IDirect3DTexture9::GetPrivateData ,IDirect3DVolumeTexture9::FreePrivateData ,IDirect3DIndexBuffer9::FreePrivateData ,IDirect3DVertexBuffer9::FreePrivateData