调用lightTerrain进行明暗的计算
这里手动计算光照(没有涉及顶点法线)
问题1:
没有用到顶点法线每个面片的顶点明暗如何计算的?
利用行列索引计算每个面的阴暗因子,利用光源向量(与光反向)和平面法向量的点积计算两者余弦,
得到的值在【-1,1】之间,将【-1,0】之间的值定为0,(因为两者夹角90度就没有光照)
应用函数:
1.int Terrain::GetHeightMapEntry(int row, int col) //读取高度函数
{
return _heightmap[row * _numVertsPerRow + col]; // 高度图数据存在_heightmap里
}
2.
D3DXVECTOR3* D3DXVec3Cross( _Inout_ D3DXVECTOR3 *pOut, _In_ const D3DXVECTOR3 *pV1, _In_ const D3DXVECTOR3 *pV2 );
计算两者叉积
3.
FLOAT D3DXVec3Dot( _In_ const D3DXVECTOR3 *pV1, _In_ const D3DXVECTOR3 *pV2 );
计算余弦