加入了背面剔除
//背面剔除
void RemoveBackfaceTriangle()
{
for (int i = ; i < objectListCount; i++)
{
for (int j = ; j < objecetList[i]->triangleCount; j++)
{
Vector3D v1 = objecetList[i]->triangleList[j].newPos[] - objecetList[i]->triangleList[j].newPos[];
Vector3D v2 = objecetList[i]->triangleList[j].newPos[] - objecetList[i]->triangleList[j].newPos[];
//法線
Vector3D normal;
VectorCross(normal, v1, v2);
Vector3D direction = objecetList[i]->triangleList[j].newPos[] - camera->GetPosition();
float dot = VectorDot(direction, normal);
if (dot <= f)
{
objecetList[i]->triangleList[j].State = TRIANGLE_BACKFACE;
}
}
}
}
效果圖

項目Github位址