1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| // determine si la face contient un cube ou un triangle
function triangle_ou_cube (Face : Array of TFace; i : integer) : integer;
begin
if Face[i].V3 = 0 then
result := 3
else
result := 4
end;
//dessine le model dans une fenetre OpenGl
procedure afficher_models ();
var
i,a : integer;
begin
glClear(GL_COLOR_BUFFER_BIT or dGL_DEPTH_BUFFER_BIT); // nettoie la scene et le deph buffer
glLoadIdentity(); // recentre la vue
for i := 1 to length(face) do
begin
if triangle_ou_cube(Face,i) = 3 then
begin
GlBegin( Gl_Triangles );
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V1].X, Vertex[Face[i].V1].Y, Vertex[Face[i].V1].Z);
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V2].X, Vertex[Face[i].V2].Y, Vertex[Face[i].V2].Z);
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V4].X, Vertex[Face[i].V4].Y, Vertex[Face[i].V4].Z);
GlEnd();
end
else
begin
GlBegin( Gl_Quads );
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V1].X, Vertex[Face[i].V1].Y, Vertex[Face[i].V1].Z);
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V2].X, Vertex[Face[i].V2].Y, Vertex[Face[i].V2].Z);
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V3].X, Vertex[Face[i].V3].Y, Vertex[Face[i].V3].Z);
Glcolor3f(1.0, 1.0, 1.0);
GlVertex3d(Vertex[Face[i].V4].X, Vertex[Face[i].V4].Y, Vertex[Face[i].V4].Z);
GlEnd();
end;
end;
end; |
Partager