网格模型中级三

作者:StrongCoding

邮箱:StrongCoding@qq.comDX群:130302441

若文中有误,请告知.十分感谢.一起加油.

 

上一篇中,我们一起学习了如何加载一个.X文件,并且从其中提取相关的材质和纹理信息,接着优化并绘制的过程。在这一篇里,我们   将一起学习如何给没有法线信息的MESH创建法线,好了不多说了,开始:

 

当提供给我们的确实是没有法线信息的MESH的时候,或者通过D3DXLoadMeshFromX函数创建MESH的时候,没                      

    D3DFVF_NORMAL的时候,我们还想要法线信息,这时候,我们只有重新克隆复制一个MESH出来:

 

之前注意加一次判断,看到底我们之前创建的MESH是否包含法线信息,如果不包含法线信息,则执行下面:

检测代码是:

 

if( ! (pMesh->getFVF() & D3DFVF_NORMALS) )

{

ID3DXMesh *pTempMesh = NULL;

pMesh->CloneMeshFVF( D3DXMESH_MANAGED, pMesh->GetFVF()|D3DFVF_NORMAL, Device, &pTempMesh );

 

                D3DXCompyterNormals( &pTempMesh, 0 );

 

                pMesh->Realease();

                pMesh = pTempMesh;

}

 

 

重要函数的解释:

 

HRESULT D3DXComputeNormals(

 									 LPD3DXBASEMESH pMesh,
  									 CONST DWORD * pAdjacency
								      );

这个函数通过顶点法线产生平均法线。假如有邻接信息,重复的顶点是会被忽略的;如果没有邻接信息,那么重复的顶点也是会            被计算的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值