void CRain::Render( LPDIRECT3DDEVICE9 pd3dDevice ) { if( !IsVisible() || ( IsCull() && GetType() != 1 )) return; if( IsUpdateMatrix() ) UpdateMatrix(); if(GetPos().y >= 0) { pd3dDevice->SetTransform( D3DTS_WORLD, &m_matWorld ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE); pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_DESTALPHA ); pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_SRCALPHA ); m_pModel->Render(pd3dDevice); pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ); pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE ); } }
// y축으로만 회전도는 버전. void CSfx::Render( LPDIRECT3DDEVICE9 pd3dDevice ) { if( !IsVisible() || ( IsCull() && GetType() != 1 )) return; if( IsUpdateMatrix() ) UpdateMatrix(); LPMODELELEM lpModelElem = prj.m_modelMng.GetModelElem( m_dwType, m_dwIndex ); // Model이 없으면 출력하지 않음 if( lpModelElem == NULL ) return; m_pSfxObj->m_vPos = GetPos(); m_pSfxObj->m_vPos.y += 0.2f; // 0.2씩이나 올릴필요가 있남? m_pSfxObj->m_vRotate.y = GetAngle(); m_pSfxObj->m_vScale = GetScale(); m_pSfxObj->m_matScale = m_matScale; m_pSfxObj->Render( pd3dDevice, NULL ); }