【CSDN浅墨】读书笔记5

来源:互联网 发布:linux 文件保存 编辑:程序博客网 时间:2024/05/17 05:01

CSDN浅墨大神博客专栏:http://blog.csdn.net/column/details/vc-game-programming.html

DirectX提供的快捷几何体绘制:

步骤:

  1. //四步曲之一,定义  
  2. ID3DXMesh* meshBox;  
  3. //四步曲之二,创建  
  4. D3DXCreateBox(  g_pd3dDevice,  2.0f, 2.0f,   2.0f,&meshBox, 0  );  
  5. //四步曲之三,绘制  
  6. g_pd3dDevice->BeginScene();  
  7. meshBox->DrawSubset(0);  
  8. //四步曲之四,释放  
  9. meshBox->Release();  


四大光照类型:

1.环境光

2.漫反射光

3.镜面反射光

4.自发光


三大光源类型:

static D3DLIGHT9 light;::ZeroMemory(&light, sizeof(light));

1.点光源

light.Type          = D3DLIGHT_POINT;  light.Ambient       = D3DXCOLOR(0.6f, 0.6f, 0.6f, 1.0f);   light.Diffuse       = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);  light.Specular      = D3DXCOLOR(0.3f, 0.3f, 0.3f, 1.0f);  light.Position      = D3DXVECTOR3(0.0f, 200.0f, 0.0f);  light.Attenuation0  = 1.0f;  light.Attenuation1  = 0.0f;  light.Attenuation2  = 0.0f;  light.Range         = 300.0f;  

2.方向光

light.Type          = D3DLIGHT_DIRECTIONAL;  light.Ambient       = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);  light.Diffuse       = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);  light.Specular      = D3DXCOLOR(0.3f, 0.3f, 0.3f, 1.0f);  light.Direction     = D3DXVECTOR3(1.0f, 0.0f, 0.0f);  

3.聚光灯

light.Type          = D3DLIGHT_SPOT;  light.Position      = D3DXVECTOR3(100.0f, 100.0f, 100.0f);  light.Direction     = D3DXVECTOR3(-1.0f, -1.0f, -1.0f);  light.Ambient       = D3DXCOLOR(0.3f, 0.3f, 0.3f, 1.0f);  light.Diffuse       = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);  light.Specular      = D3DXCOLOR(0.3f, 0.3f, 0.3f, 0.3f);  light.Attenuation0  = 1.0f;   light.Attenuation1  = 0.0f;   light.Attenuation2  = 0.0f;   light.Range         = 300.0f;  light.Falloff       = 0.1f;  light.Phi           = D3DX_PI / 3.0f;  light.Theta         = D3DX_PI / 6.0f;  
最后通过g_p3dDevice设置开启光源

g_pd3dDevice->SetLight(0, &light);g_pd3dDevice->LightEnable(0, true);g_pd3dDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(36, 36, 36));g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, true);g_pd3dDevice->SetRenderState(D3DRS_NORMALIZENORMALS, true);g_pd3dDevice->SetRenderState(D3DRS_SPECULARENABLE, true);g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW)

材质

D3DMATERIAL9 mtrl;::ZeroMemory(&mtrl, sizeof(mtrl));mtrl.Ambient  = D3DXCOLOR(0.5f, 0.5f, 0.7f, 1.0f);  mtrl.Diffuse  = D3DXCOLOR(0.6f, 0.6f, 0.6f, 1.0f);  mtrl.Specular = D3DXCOLOR(0.3f, 0.3f, 0.3f, 0.3f);  mtrl.Emissive = D3DXCOLOR(0.3f, 0.0f, 0.1f, 1.0f);g_pd3dDevice->SetMaterial(&mtrl);

顶点法线

使用顶点法线目的是使模型在光照效果下质地更加光滑

原创粉丝点击