刚看完了DXUT,拿来练练手
这个框架却实方便啊,终于不用写那些令人恶心的API函数了
光影贴图,说白了就是在纹理上表现出来光影效果,并不是实时计算的,所以适用于固定的场影平面,如地面,墙壁等
原理嘛,就是多层纹理的叠加,除了模型本身的纹理外,还需要光纹理

效果如图
Direct3D学习(三):光影贴图

关键代码如下:

Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice->SetTexture(0,pTexture0);/**////在0号纹理层固定纹理(壁面)
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice->SetTexture(1,pTexture1);/**////在1号纹理层固定纹理(光影贴图)
Direct3D学习(三):光影贴图
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(0,D3DTSS_TEXCOORDINDEX,0);/**////0号纹理:使用0号纹理索引
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice->SetTextureStageState(1,D3DTSS_TEXCOORDINDEX,0);/**////1号纹理:使用0号纹理索引
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);/**////0号纹理层的放大滤镜
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice->SetSamplerState(1,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);/**////1号纹理层的放大滤镜
Direct3D学习(三):光影贴图pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
Direct3D学习(三):光影贴图
Direct3D学习(三):光影贴图Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);/**////运用MODULATE运算进行颜色混合
Direct3D学习(三):光影贴图pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
Direct3D学习(三):光影贴图
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(2,D3DTSS_COLOROP,D3DTOP_DISABLE);
Direct3D学习(三):光影贴图pd3dDevice
->SetTextureStageState(2,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
Direct3D学习(三):光影贴图

相关文章:

  • 2021-07-12
  • 2021-12-29
  • 2021-05-23
  • 2021-11-15
  • 2021-12-16
  • 2021-10-21
猜你喜欢
  • 2021-12-23
  • 2021-11-29
  • 2021-04-19
  • 2021-11-30
  • 2021-12-12
  • 2021-12-05
  • 2021-04-20
相关资源
相似解决方案