Share via


Funzione D3DXIntersectSubset

Interseca il raggio specificato con il subset di mesh specificato. In questo modo vengono fornite funzionalità simili a D3DXIntersect.

Sintassi

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

Parametri

pMesh [in]

Tipo: LPD3DXBASEMESH

Puntatore a un'interfaccia ID3DXBaseMesh che rappresenta la mesh da testare. La mesh deve essere ordinata con attributi.

AttribId [in]

Tipo: DWORD

Identificatore dell'attributo del subset con cui intersecarsi.

pRayPos [in]

Tipo: const D3DXVECTOR3*

Puntatore a una struttura D3DXVECTOR3 , specificando il punto in cui inizia il raggio.

pRayDir [in]

Tipo: const D3DXVECTOR3*

Puntatore a una struttura D3DXVECTOR3 , specificando la direzione del raggio.

pHit [out]

Tipo: BOOL*

Puntatore a un valore BOOL. Se il raggio interseca una faccia triangolare sulla mesh, questo valore verrà impostato su TRUE. In caso contrario, questo valore è impostato su FALSE.

pFaceIndex [out]

Tipo: DWORD*

Puntatore a un valore di indice del viso più vicino all'origine del raggio, se pHit è TRUE.

pU [out]

Tipo: FLOAT*

Puntatore a una coordinata di hit barycentrica, U.

pV [out]

Tipo: FLOAT*

Puntatore a una coordinata di hit barycentrica, V.

pDist [out]

Tipo: FLOAT*

Puntatore a una distanza del parametro di intersezione raggio.

ppAllHits [out]

Tipo: LPD3DXBUFFER*

Matrice di strutture D3DXINTERSECTINFO , che rappresentano tutti i riscontri, non solo i riscontri più vicini.

pCountOfHits [out]

Tipo: DWORD*

Numero di elementi nella matrice restituiti da ppAllHits.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, il valore restituito viene D3D_OK. Se la funzione ha esito negativo, il valore restituito può essere il valore seguente: E_OUTOFMEMORY.

Commenti

La funzione D3DXIntersectSubset consente di comprendere i punti in e intorno a un triangolo, indipendentemente dalla posizione in cui si trova effettivamente il triangolo. Questa funzione restituisce il punto risultante usando l'equazione seguente: V1 + U(V2 - V1) + V(V3 - V1).

Qualsiasi punto del piano V1V2V3 può essere rappresentato dalla coordinata barycentrica (U,V). Il parametro U controlla la quantità di V2 ponderata nel risultato e il parametro V controlla la quantità di V3 ponderata nel risultato. Infine, il valore di [1 - (U + V)] controlla la quantità di V1 ponderata nel risultato.

Le coordinate bariche sono una forma di coordinate generali. In questo contesto, l'uso di coordinate bariche rappresenta una modifica nei sistemi di coordinate. Ciò che vale per le coordinate cartesiane vale per le coordinate bariche.

Le coordinate bariche definiscono un punto all'interno di un triangolo in termini di vertici del triangolo. Per una descrizione più approfondita delle coordinate barycentriche, vedere Descrizione delle coordinate bariche di Mathworld.

Requisiti

Requisito Valore
Intestazione
D3DX9Mesh.h
Libreria
D3dx9.lib

Vedi anche

Funzioni mesh