Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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