- for i:=0 to Length(Triangles)-1 do
- begin
- if Plane_Dist(Triangles[i].Plane,LightPos) <0 then
- begin
- // 1)
- glBegin(GL_TRIANGLES);
- glVertex3fv(Triangles[i].Points[2]);
- glVertex3fv(Triangles[i].Points[1]);
- glVertex3fv(Triangles[i].Points[0]);
- glEnd();
- // 2)
- glBegin(GL_TRIANGLES);
- glVertex3fv(ExtrudePoint(Triangles[i].Points[0]));
- glVertex3fv(ExtrudePoint(Triangles[i].Points[1]));
- glVertex3fv(ExtrudePoint(Triangles[i].Points[2]));
- glEnd();
- for j:=0 to 2 do
- begin
- edge_triangle := triangles[i].edge[j];
- if (edge_triangle =-1) or (Plane_Dist(Triangles[edge_triangle].Plane,LightPos)>0) then
- begin
- glBegin(GL_TRIANGLE_STRIP);
- glVertex3fv(Triangles[i].Points[j]);
- glVertex3fv(Triangles[i].Points[(j+1) mod 3]);
- glVertex3fv(ExtrudePoint(Triangles[i].Points[j]));
- glVertex3fv(ExtrudePoint(Triangles[i].Points[(j+1) mod 3]));
- glEnd();
- end;
- end;
- end;
- end;