Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les données alpha peuvent être fournies dans les données de vertex. Pour activer le vertex alpha, définissez la D3DRS_DIFFUSEMATERIALSOURCE sur D3DMCS_COLOR1 afin que le runtime Direct3D prenne la valeur diffuse de la couleur diffuse plutôt que du matériau.
m_pd3dDevice->SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE,
D3DMCS_COLOR1 );
Ensuite, fournissez des valeurs alpha dans la couleur diffuse. La fonction AddAlphaToASphere ajoute alpha aux sommets d’une sphère. Voici un exemple de la façon de fournir les informations alpha à la fonction.
AddAlphaToASphere( m_pObstacleVertices, 12,
D3DRGBA(light.dcvDiffuse.r, light.dcvDiffuse.g,
light.dcvDiffuse.b, vAlpha ));
C’est à quoi ressemble la fonction.
void AddAlphaToASphere(D3DLVERTEX* pVertices, DWORD dwNumRings, D3DCOLOR lightcolor)
{
WORD x, y;
// rings around
for( y=0; y < dwNumRings; y++ )
for( x=0; x < (dwNumRings*2)+1; x++ )
(pVertices++)->color = lightcolor;
// top and bottom
(pVertices++)->color = lightcolor;
(pVertices++)->color = lightcolor;
}
AddAlphaToASphere modifie simplement le membre de couleur de chaque vertex, qui sont de type D3DLVERTEX, pour inclure les informations alpha.
D3DLVERTEX ressemble à ceci.
// Lit vertex
typedef struct {
D3DVALUE x, y, z;
DWORD dwReserved;
D3DCOLOR color, specular;
D3DVALUE tu, tv;
} D3DLVERTEX, *LPD3DLVERTEX;
Dessin de la sphère,
#define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
D3DFVF_TEX0 )
//...
// Draw the lit sphere
m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, D3DFVF_LVERTEX,
m_pObstacleVertices, m_dwNumObstacleVertices,
m_pObstacleIndices, m_dwNumObstacleIndices, 0 );
génère une sphère transparente à l’aide de vertex alpha.
Rubriques connexes