D3DXIntersectSubset 함수

지정된 광선을 지정된 메시 하위 집합과 교차합니다. 이는 D3DXIntersect와 유사한 기능을 제공합니다.

구문

HRESULT D3DXIntersectSubset(
  _In_        LPD3DXBASEMESH pMesh,
  _In_        DWORD          AttribId,
  _In_  const D3DXVECTOR3    *pRayPos,
  _In_  const D3DXVECTOR3    *pRayDir,
  _Out_       BOOL           *pHit,
  _Out_       DWORD          *pFaceIndex,
  _Out_       FLOAT          *pU,
  _Out_       FLOAT          *pV,
  _Out_       FLOAT          *pDist,
  _Out_       LPD3DXBUFFER   *ppAllHits,
  _Out_       DWORD          *pCountOfHits
);

매개 변수

pMesh [in]

형식: LPD3DXBASEMESH

테스트할 메시를 나타내는 ID3DXBaseMesh 인터페이스에 대한 포인터입니다. 메시는 특성을 정렬해야 합니다.

AttribId [in]

형식: DWORD

교차할 하위 집합의 특성 식별자입니다.

pRayPos [in]

형식: const D3DXVECTOR3*

광선이 시작되는 지점을 지정하는 D3DXVECTOR3 구조체에 대한 포인터입니다.

pRayDir [in]

형식: const D3DXVECTOR3*

광선 방향을 지정하는 D3DXVECTOR3 구조체에 대한 포인터입니다.

pHit [out]

형식: BOOL*

BOOL에 대한 포인터입니다. 광선이 메시의 삼각형 면과 교차하는 경우 이 값은 TRUE로 설정됩니다. 그렇지 않으면 이 값이 FALSE로 설정됩니다.

pFaceIndex [out]

형식: DWORD*

pHit이 TRUE인 경우 광선 원점과 가장 가까운 얼굴의 인덱스 값에 대한 포인터입니다.

pU [out]

형식: FLOAT*

막대 중심 적중 좌표 U에 대한 포인터입니다.

pV [out]

형식: FLOAT*

막대 중심 적중 좌표인 V에 대한 포인터입니다.

pDist [out]

형식: FLOAT*

광선 교차 매개 변수 거리에 대한 포인터입니다.

ppAllHits [out]

형식: LPD3DXBUFFER*

가장 가까운 적중 항목뿐만 아니라 모든 적중을 나타내는 D3DXINTERSECTINFO 구조체의 배열입니다.

pCountOfHits [out]

형식: DWORD*

ppAllHits에서 반환된 배열의 요소 수입니다.

반환 값

형식: HRESULT

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

설명

D3DXIntersectSubset 함수는 삼각형이 실제로 있는 위치와 관계없이 삼각형 안팎의 점을 이해하는 방법을 제공합니다. 이 함수는 V1 + U(V2 - V1) + V(V3 - V1) 수식을 사용하여 결과 지점을 반환합니다.

평면 V1V2V3의 모든 지점은 좌표(U,V)로 나타낼 수 있습니다. 매개 변수 U는 결과에 가중치가 지정된 V2의 양을 제어하고, 매개 변수 V는 V3이 결과에 가중치를 두는 양을 제어합니다. 마지막으로 [1 - (U + V)] 값은 V1이 결과에 가중치를 두는 양을 제어합니다.

바리센트릭 좌표는 일반 좌표의 한 형태입니다. 이 컨텍스트에서 바리센트릭 좌표를 사용하면 좌표계가 변경됩니다. 카티시안 좌표에 대해 참인 것은 바리센트릭 좌표에 대해 true입니다.

바리센트릭 좌표는 삼각형의 꼭짓점 측면에서 삼각형 내의 점을 정의합니다. 바리센트릭 좌표에 대한 자세한 설명은 Mathworld의 Barycentric 좌표 설명을 참조하세요.

요구 사항

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

추가 정보

메시 함수