Compartir a través de


Función D3DXIntersectSubset

Intersecta el rayo especificado con el subconjunto de malla especificado. Esto proporciona una funcionalidad similar a D3DXIntersect.

Sintaxis

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
);

Parámetros

pMesh [in]

Tipo: LPD3DXBASEMESH

Puntero a una interfaz ID3DXBaseMesh , que representa la malla que se va a probar. La malla debe estar ordenada por atributos.

AttribId [in]

Tipo: DWORD

Identificador de atributo del subconjunto con el que se va a intersecar.

pRayPos [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 , especificando el punto donde comienza el rayo.

pRayDir [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 , especificando la dirección del rayo.

pHit [out]

Tipo: BOOL*

Puntero a un BOOL. Si el rayo interseca una cara triangular en la malla, este valor se establecerá en TRUE. De lo contrario, este valor se establece en FALSE.

pFaceIndex [out]

Tipo: DWORD*

Puntero a un valor de índice de la cara más cercana al origen del rayo, si pHit es TRUE.

pU [out]

Tipo: FLOAT*

Puntero a una coordenada de acierto barycéntrico, U.

pV [out]

Tipo: FLOAT*

Puntero a una coordenada de acierto barycéntrico, V.

pDist [out]

Tipo: FLOAT*

Puntero a una distancia de parámetro de intersección de rayos.

ppAllHits [out]

Tipo: LPD3DXBUFFER*

Matriz de estructuras D3DXINTERSECTINFO , que representan todos los aciertos, no solo aciertos más cercanos.

pCountOfHits [out]

Tipo: DWORD*

Número de elementos de la matriz devueltas por ppAllHits.

Valor devuelto

Tipo: HRESULT

Si la función se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en la función, el valor devuelto puede ser el siguiente: E_OUTOFMEMORY.

Observaciones

La función D3DXIntersectSubset proporciona una manera de comprender los puntos de un triángulo, independientemente de dónde se encuentra realmente el triángulo. Esta función devuelve el punto resultante mediante la siguiente ecuación: V1 + U(V2 - V1) + V(V3 - V1).

Cualquier punto del plano V1V2V3 se puede representar mediante la coordenada barycéntrica (U,V). El parámetro U controla cuánto V2 se pondera en el resultado y el parámetro V controla cuánto V3 se pondera en el resultado. Por último, el valor de [1 - (U + V)] controla cuánto V1 se pondera en el resultado.

Las coordenadas barycéntricas son una forma de coordenadas generales. En este contexto, el uso de coordenadas barycéntricas representa un cambio en los sistemas de coordenadas. Lo que es cierto para las coordenadas cartesianas es true para las coordenadas barycéntricas.

Las coordenadas Barycéntricas definen un punto dentro de un triángulo en términos de vértices del triángulo. Para obtener una descripción más detallada de las coordenadas barycéntricas, consulte descripción de coordenadas barycéntricas de Mathworld.

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

Funciones de malla