//当前网格左上角顶点索引
DWORD dwLeftTop = j * Width + i;
//将组成当前网格的两个三角形的顶点索引写入索引缓冲区
//左上角、右上角、左下角组成第一个三角形
//右上角、右下角、左下角组成第二个三角形
( * pIndexBuffer ) = dwLeftTop;
pIndexBuffer++;
( * pIndexBuffer ) = dwLeftTop + 1;
pIndexBuffer++;
( * pIndexBuffer ) = dwLeftTop + Width;
pIndexBuffer++;
( * pIndexBuffer ) = dwLeftTop + 1;
pIndexBuffer++;
( * pIndexBuffer ) = dwLeftTop + Width + 1;
pIndexBuffer++;
( * pIndexBuffer ) = dwLeftTop + Width;
pIndexBuffer++;
//设当前网格左上角,右上角,右下角,左下角分别为v0, v1, v2, v3
//计算组成当前网格的两个三角形的法线向量n1, n2
D3DXVECTOR3 v0, v1, v2, v3, n1, n2;
v0 = TerrainVertices[dwLeftTop];
v1 = TerrainVertices[dwLeftTop + 1];
v2 = TerrainVertices[dwLeftTop + Width + 1];
v3 = TerrainVertices[dwLeftTop + Width];
D3DXVec3Cross( &n1, &D3DXVECTOR3( v1.x - v0.x, v1.y - v0.y, v1.z - v0.z ), &D3DXVECTOR3( v3.x - v0.x, v3.y - v0.y, v3.z - v0. z ) );
D3DXVec3Cross( &n2, &D3DXVECTOR3( v2.x - v1.x, v2.y - v1.y, v2.z - v1.z ), &D3DXVECTOR3( v3.x - v1.x, v3.y - v1.y, v3.z - v1.z ) );
//计算组成当前网格的两个三角形所在平面方程的系数和常数项
Coefficient[j][i].a1 = n1.x;
Coefficient[j][i].b1 = n1.y;
Coefficient[j][i].c1 = n1.z;
Coefficient[j][i].d1 = - ( n1.x * v0.x + n1.y * v0.y + n1.z * v0.z );
Coefficient[j][i].a2 = n2.x;
Coefficient[j][i].b2 = n2.y;
Coefficient[j][i].c2 = n2.z;
Coefficient[j][i].d2 = - ( n2.x * v2.x + n2.y * v2.y + n2.z * v2.z );