Nanashi-soft○プログラマ専用○DirectX11開発○
struct Vertex3D {このnor_x,nor_y,nor_zが,3つの頂点の共通した法線ベクトルになる
float pos[3]; //x-y-z
};
Vertex3D hVectorData[3] = {
{ +0.0f, +0.5f, +0.5f },
{ +0.5f, -0.5f, +0.5f },
{ -0.5f, -0.5f, +0.5f }
};
XMVECTOR p1=XMVectorSet(hVectorData[0][0], hVectorData[0][1], hVectorData[0][2], 1.0f);
XMVECTOR p2=XMVectorSet(hVectorData[1][0], hVectorData[1][1], hVectorData[1][2], 1.0f);
XMVECTOR p3=XMVectorSet(hVectorData[2][0], hVectorData[2][1], hVectorData[2][2], 1.0f);
XMVECTOR v1 = p2 - p1;
XMVECTOR v2 = p3 - p1;
XMVECTOR normal = XMVector3Cross(v1, v2);
float nor_x = XMVectorGetX(normal);
float nor_y = XMVectorGetY(normal);
float nor_z = XMVectorGetZ(normal);
nor_x3 = XMVectorAdd(nor_x1, nor_x2);このnor_x3を設定すればいい