다음을 통해 공유


꼭짓점 알파(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 );

는 꼭짓점 알파를 사용하여 투명한 구를 생성합니다.

알파 혼합