|
|
发表于 2007-9-18 09:16:00
|
显示全部楼层
Re:directX里面光照阴影需要怎么设置?
如果你没做过,这种东西没办法在短时间内写完(如果要加到你的引擎或其他架构构里,更是如此).至于阴影,你可以去看看DXSDK的SHADOWMAP.,需要用SHADER.
而对于CPU的光照,则增加以下(里面的数据都是可变的):
D3DXVECTOR3 vecDir;
D3DLIGHT9 light;
ZeroMemory( &light, sizeof(D3DLIGHT9) );
light.Type = D3DLIGHT_DIRECTIONAL;//定义方向光
light.Diffuse.r = 2.0f;
light.Diffuse.g = 1.8f;
light.Diffuse.b = 1.4f;
vecDir =-m_pLight->GetLightView();
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );
light.Range = 10000.0f;
m_pd3dDevice->SetLight( 0, &light );//设置主光源
m_pd3dDevice->LightEnable( 0, TRUE );
m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
m_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0x80808080 );//环境光
//设置混合模式
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
但这办法无法做阴影.只有光照明暗效果.
|
|