|
|
请教一下projective shadow的问题
void Level::GenerateTexture()
{
D3DXMatrixLookAtLH( &m_matWorld2Light, &m_vLightPos, &y_Player.position, &D3DXVECTOR3(0,1,0) );
D3DXMatrixPerspectiveFovLH( &m_matTexProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
LPDIRECT3DSURFACE9 p = NULL;
m_pd3dDevice->GetRenderTarget( 0, &p );
m_pd3dDevice->SetRenderTarget( 0, m_pSurProj );
m_pd3dDevice->BeginScene();
D3DXMATRIXA16 matProjection;
D3DXMatrixPerspectiveFovLH( &matProjection, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
//matProjection.m[0][0] = 10;
//matProjection.m[1][1] = 10;
m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 );
m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE);
m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
// 渲染为TEXTUREFACTOR颜色
m_pd3dDevice->SetTexture( 0,NULL );
m_pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, D3DCOLOR_ARGB(0,128,128,128) );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
m_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );//matWorld
m_pd3dDevice->SetTransform( D3DTS_VIEW, &m_matWorld2Light );
m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProjection );
y_Player.Render();
D3DXMatrixIdentity( &matProjection );
m_pd3dDevice->SetTransform( D3DTS_WORLD, &matProjection );//matProjection
m_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
m_pd3dDevice->EndScene();
m_pd3dDevice->SetRenderTarget( 0, p );
SAFE_RELEASE( p );
}
这个函数用来生成一张阴影的图 但是我生成的阴影为什么带有人物贴图中的颜色,我不是已经指定其为灰色了吗? |
|