Re: Polygon missing vertex
 From: Maik Wagner <maikwagner@xxxxxx>
 Date: Fri, 24 Feb 2006 03:49:57 +0100
Andy Kaye wrote:
Anyone know how to draw a polygon in opengl ?
The following code should display a flat T shape, but openGL decides to
ignore the second vertex and renders a diagonal line from point one to point
three. Change the mode to line and it all works OK.
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(0,4,0);
glVertex3f(4,4,0); < This vertex ignored
glVertex3f(4,2,0);
glVertex3f(6,2,0);
glVertex3f(6,4,0);
glVertex3f(10,4,0);
glVertex3f(10,6,0);
glVertex3f(0,6,0);
glVertex3f(0,4,0); < makes no difference closing the polygon
or not.
glEnd();
Tried this on 2 machines with differing graphics cards, same result.
It is look like everything is said. But just a hint: When you make OGL draw a Polygon, it handles it, like it is a TriangleFan. That's why you (at least sometimes) cannot draw convex Polygons.
If you want to draw a "T" with just one GL_POLYGON you perhaps could try to split the above line of T into to edges, and start with the middle vertex. Like:
***
 
** **
 
 
**
In your case it would be:
glBegin(GL_POLYGON);
glVertex3f(5,6,0);
glVertex3f(0,6,0);
glVertex3f(0,4,0);
glVertex3f(4,4,0);
glVertex3f(4,2,0);
glVertex3f(6,2,0);
glVertex3f(6,4,0);
glVertex3f(10,4,0);
glVertex3f(10,6,0);
glEnd();
When using this with Filled Mode it makes no difference if you use GL_POLYGON or GL_TRIANGLE_FAN. Try it and you will see.
Just Remember OGL has to handle everything as Triangles (more or less, its at least something good to imagine), even if you wont see first.
(An arrow for this case is another classic example)
So as fungus said, OGL can't handle nonconvex polygons, but sometimes you can get it handle this right. (In your case with one more Vertex)
.
 References:
 Polygon missing vertex
 From: Andy Kaye
 Polygon missing vertex
 Prev by Date: Re: Polygon missing vertex
 Next by Date: Re: Polygon missing vertex
 Previous by thread: Re: Polygon missing vertex
 Next by thread: Comparing floating point numbers for equality
 Index(es):
Relevant Pages
