다음을 통해 공유


D3DXLoadMeshHierarchyFromX 함수

.x 파일에서 첫 번째 프레임 계층 구조를 로드합니다.

구문

HRESULT D3DXLoadMeshHierarchyFromX(
  _In_  LPCTSTR                   Filename,
  _In_  DWORD                     MeshOptions,
  _In_  LPDIRECT3DDEVICE9         pDevice,
  _In_  LPD3DXALLOCATEHIERARCHY   pAlloc,
  _In_  LPD3DXLOADUSERDATA        pUserDataLoader,
  _Out_ LPD3DXFRAME               *ppFrameHierarchy,
  _Out_ LPD3DXANIMATIONCONTROLLER *ppAnimController
);

매개 변수

파일 이름 [in]

형식: LPCTSTR

파일 이름을 지정하는 문자열에 대한 포인터입니다. 컴파일러 설정에 유니코드가 필요한 경우 데이터 형식 LPCTSTR이 LPCWSTR로 확인됩니다. 그렇지 않으면 문자열 데이터 형식이 LPCSTR로 확인됩니다. 설명 부분을 참조하세요.

MeshOptions [in]

형식: DWORD

메시에 대한 만들기 옵션을 지정하는 D3DXMESH 열거형에서 하나 이상의 플래그 조합입니다.

pDevice [in]

형식: LPDIRECT3DDEVICE9

메시와 연결된 디바이스 개체인 IDirect3DDevice9 인터페이스에 대한 포인터입니다.

pAlloc [in]

형식: LPD3DXALLOCATEHIERARCHY

ID3DXAllocateHierarchy 인터페이스에 대한 포인터입니다.

pUserDataLoader [in]

형식: LPD3DXLOADUSERDATA

사용자 데이터를 로드할 수 있는 애플리케이션 제공 인터페이스입니다. ID3DXLoadUserData를 참조하세요.

ppFrameHierarchy [out]

형식: LPD3DXFRAME*

로드된 프레임 계층 구조에 대한 포인터를 반환합니다. D3DXFRAME을 참조하세요.

ppAnimController [out]

형식: LPD3DXANIMATIONCONTROLLER*

.x 파일의 애니메이션에 해당하는 애니메이션 컨트롤러에 대한 포인터를 반환합니다. 기본 트랙 및 이벤트로 만들어집니다. ID3DXAnimationController를 참조하세요.

반환 값

형식: HRESULT

함수가 성공하면 반환 값이 D3D_OK. 함수가 실패하면 반환 값은 D3DERR_INVALIDCALL, E_OUTOFMEMORY 값 중 하나일 수 있습니다.

설명

컴파일러 설정은 함수 버전도 결정합니다. 유니코드가 정의되면 함수 호출이 D3DXLoadMeshHierarchyFromXW로 확인됩니다. 그렇지 않으면 함수 호출이 D3DXLoadMeshHierarchyFromXA로 확인됩니다.

파일의 모든 메시는 하나의 출력 메시로 축소됩니다. 파일에 프레임 계층 구조가 포함된 경우 모든 변환이 메시에 적용됩니다.

D3DXLoadMeshHierarchyFromX 는 .x 파일에서 애니메이션 데이터 및 프레임 계층 구조를 로드합니다. .x 파일을 검색하고 pAlloc를 통해 전달된 ID3DXAllocateHierarchy 파생 개체에 따라 프레임 계층 및 애니메이션 컨트롤러를 빌드합니다. 데이터를 로드하려면 다음과 같은 몇 가지 단계가 필요합니다.

  1. ID3DXAllocateHierarchy를 파생하여 각 메서드를 구현합니다. 이렇게 하면 프레임과 메시가 할당되고 해제되는 방식이 제어됩니다.
  2. 각 메서드를 구현하여 ID3DXLoadUserData를 파생합니다. .x 파일에 포함된 사용자 정의 데이터가 없거나 필요하지 않은 경우 이 부분을 건너뛸 수 있습니다.
  3. ID3DXAllocateHierarchy 클래스의 개체를 만들고 필요에 따라 LoadUserData 클래스를 만듭니다. 이러한 개체의 메서드를 직접 호출할 필요는 없습니다.
  4. D3DXLoadMeshHierarchyFromX를 호출하여 ID3DXAllocateHierarchy 개체와 ID3DXLoadUserData 개체(또는 NULL)를 전달하여 프레임 계층 및 애니메이션 컨트롤러를 만듭니다. 모든 애니메이션 집합 및 프레임은 애니메이션 컨트롤러에 자동으로 등록됩니다.

로드하는 동안 프레임의 로드 및 할당을 제어하기 위해 각 프레임에서 CreateFrameLoadFrameChildData 가 다시 호출됩니다. 애플리케이션은 프레임 저장 방법을 제어하기 위해 이러한 메서드를 정의합니다. CreateMeshContainerLoadMeshChildData 는 메시 개체의 로드 및 할당을 제어하기 위해 각 메시 개체에서 다시 호출됩니다. LoadTopLevelData 는 다른 메서드에 의해 로드되지 않는 각 최상위 개체에 대해 다시 호출됩니다.

이 데이터를 해제하려면 ID3DXAnimationController::Release를 호출하여 애니메이션 집합을 해제하고 D3DXFRAMEDestroy를 호출하여 프레임 계층의 루트 노드와 파생 ID3DXAllocateHierarchy 클래스의 개체를 전달합니다. DestroyFrameDestroyMeshContainer 는 프레임 계층 구조의 모든 프레임 및 메시 개체에 대해 각각 호출됩니다. DestroyFrame 구현은 CreateFrame에서 할당한 모든 항목을 해제해야 하며 메시 컨테이너 메서드도 마찬가지입니다.

요구 사항

요구 사항
헤더
D3dx9anim.h
라이브러리
D3dx9.lib

추가 정보

애니메이션 함수