꼭짓점 알파(Direct3D 9)
알파 데이터는 꼭짓점 데이터에 제공할 수 있습니다. 꼭짓점 알파를 사용하도록 설정하려면 Direct3D 런타임이 재질이 아닌 확산 색에서 확산 값을 사용하도록 D3DRS_DIFFUSEMATERIALSOURCE D3DMCS_COLOR1 설정합니다.
m_pd3dDevice->SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE,
D3DMCS_COLOR1 );
그런 다음, 확산 색으로 알파 값을 제공합니다. AddAlphaToASphere 함수는 구의 꼭짓점에 알파를 추가합니다. 함수에 알파 정보를 제공하는 방법의 예는 다음과 같습니다.
AddAlphaToASphere( m_pObstacleVertices, 12,
D3DRGBA(light.dcvDiffuse.r, light.dcvDiffuse.g,
light.dcvDiffuse.b, vAlpha ));
함수의 모양입니다.
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는 알파 정보를 포함하도록 D3DLVERTEX 형식인 각 꼭짓점의 색 멤버를 수정하기만 하면 됩니다.
D3DLVERTEX는 다음과 같습니다.
// Lit vertex
typedef struct {
D3DVALUE x, y, z;
DWORD dwReserved;
D3DCOLOR color, specular;
D3DVALUE tu, tv;
} D3DLVERTEX, *LPD3DLVERTEX;
구 그리기
#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 );
는 꼭짓점 알파를 사용하여 투명한 구를 생성합니다.
관련 항목