Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Alphadaten können in den Vertexdaten bereitgestellt werden. Um vertex alpha zu aktivieren, legen Sie die D3DRS_DIFFUSEMATERIALSOURCE auf D3DMCS_COLOR1 fest, sodass die Direct3D-Laufzeit den diffusen Wert aus der diffusen Farbe anstelle des Materials verwendet.
m_pd3dDevice->SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE,
D3DMCS_COLOR1 );
Stellen Sie dann Alphawerte in der diffusen Farbe bereit. Die Funktion AddAlphaToASphere fügt alpha zu den Scheitelpunkten einer Kugel hinzu. Hier ist ein Beispiel für die Bereitstellung der Alphainformationen für die Funktion.
AddAlphaToASphere( m_pObstacleVertices, 12,
D3DRGBA(light.dcvDiffuse.r, light.dcvDiffuse.g,
light.dcvDiffuse.b, vAlpha ));
So sieht die Funktion aus.
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 ändert einfach das Farbelement jedes Scheitelpunkts, der vom Typ D3DLVERTEX ist, um die Alphainformationen einzuschließen.
D3DLVERTEX sieht wie folgt aus.
// Lit vertex
typedef struct {
D3DVALUE x, y, z;
DWORD dwReserved;
D3DCOLOR color, specular;
D3DVALUE tu, tv;
} D3DLVERTEX, *LPD3DLVERTEX;
Zeichnen der Kugel,
#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 );
führt zu einer transparenten Kugel mit Vertex-Alpha.
Verwandte Themen