加入了背面剔除
//背面剔除
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;
}
}
}
}
效果图
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LclXQ61EaWhUY1x2RlZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO1UDM0kzMxIDMzQDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
项目Github地址