D3DXIntersectSubset function
Intersects the specified ray with the given mesh subset. This provides similar functionality to D3DXIntersect.
Syntax
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
);
Parameters
-
pMesh [in]
-
Type: LPD3DXBASEMESH
Pointer to an ID3DXBaseMesh interface, representing the mesh to be tested. The mesh must be attribute sorted.
-
AttribId [in]
-
Type: DWORD
Attribute identifier of the subset to intersect with.
-
pRayPos [in]
-
Type: const D3DXVECTOR3*
Pointer to a D3DXVECTOR3 structure, specifying the point where the ray begins.
-
pRayDir [in]
-
Type: const D3DXVECTOR3*
Pointer to a D3DXVECTOR3 structure, specifying the direction of the ray.
-
pHit [out]
-
Type: BOOL*
Pointer to a BOOL. If the ray intersects a triangular face on the mesh, this value will be set to TRUE. Otherwise, this value is set to FALSE.
-
pFaceIndex [out]
-
Type: DWORD*
Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.
-
pU [out]
-
Type: FLOAT*
Pointer to a barycentric hit coordinate, U.
-
pV [out]
-
Type: FLOAT*
Pointer to a barycentric hit coordinate, V.
-
pDist [out]
-
Type: FLOAT*
Pointer to a ray intersection parameter distance.
-
ppAllHits [out]
-
Type: LPD3DXBUFFER*
Array of D3DXINTERSECTINFO structures, representing all hits, not just closest hits.
-
pCountOfHits [out]
-
Type: DWORD*
Number of elements in the array returned from ppAllHits.
Return value
Type: HRESULT
If the function succeeds, the return value is D3D_OK. If the function fails, the return value can be the following value: E_OUTOFMEMORY.
Remarks
The D3DXIntersectSubset function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).
Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.
Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.
Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.
Requirements
Requirement | Value |
---|---|
Header |
|
Library |
|
See also