Polygons vs Triangles: which is the correct term?

Jason210

Newcomer
Hi

In the context of HAL /D3D / OpenGL based 3D graphics, if someone asked you what is the basic unit of the 3D graphic, what would you reply? Triangle or polygon? In general or mathematical terms, a triangle is a polygon, and I often here the term "Polygons per second when discussing speed". Are they talking about triangles, or polygons like those found in 3D Studio Max, where the word polygon refers to a specific object formed out of adjoining faces, which are in fact two triangles.

I'd be grateful if an expert could help clarify this for me!! Which is the preferred term? Triangles per second or polygons per second? What does polygons per second actually mean?

Ok, many thanks in advance!
Regards
Jason
 
While the primitive that 3D accelerator use is a Triangle (which is a polygon) you need to break it down even further than that into Vertices.

Ostensibly a triangle consists of 3 vertex points – the points of the triangle, and that’s what 3D chips calculate to make the triangle. Its normal to think that to build a triangle you need 3 vertex points, however in the world of 3D that’s not the case because vertexs are shared between triangles – if you think of a square that’s made of two triangles 6 vertices do not need to be defined, only 4 but two of those vertices are shared by each triangle.

When talking about polygon performance on 3D accelerators, what’s probably more important is the number of vertices that can be calculated.
 
While I'm far from being an expert in 3D programming, I dabble in OpenGL programming occasionally. I briefly discuss the subject of "primitives" in an introductory article on programming in OpenGL. Here's what I wrote.

Models, or objects, in OpenGL are constructed with geometric primitives which consist of points, line segments, and polygons. The process of generating the images corresponding to these models is referred to as rendering.

OpenGL Geometric Primitives

primitives.gif


Models are defined using vertex data which represents a single point that marks the endpoint of a line or the corner of a polygon. By definition, a vertex is where two edges meet.

Since rectangles, (and other models) are frequently used in OpenGL, a command to easily generate them has been furnished as part of the OpenGL library.

http://www.nvnews.net/articles/opengl/introduction.shtml

I agree with Dave that performance would consist of some form of measurement involving vertices.
 
Just curious:
When I say use, GL_QUADS, does the 3D accelerator automatically break it up into 2 triangles or does it know how to deal with Quads in hardware?
 
JF_Aidan_Pryde said:
Just curious:
When I say use, GL_QUADS, does the 3D accelerator automatically break it up into 2 triangles or does it know how to deal with Quads in hardware?
Depends on the hardware - some systems could deal directly with quads, while others would produce 2 (or perhaps 4) triangles.
 
JF_Aidan_Pryde said:
Geforce / Radeon / Classic Voodoos?

voodoos: triangles.
although glide had a DrawPolygon command it was internally handled as a trifan, to the best of my knowledge.

thinking of it, i have a question for Simon:
does the povervr (having a strict tile clipping?) actually process planar convex polys (what you get from a clipped tri) at the scanconversion level or does it turn any clipped triangles into fans/strips?
 
Geforce 3?

The front end will pretty much take any OpenGL primitive short of a GL_Polygon directly, but they are still split up into tris by the hardware before they are raterized. i.e. you will get no benefit submitting a GL_QUAD_STRIP over submitting the same geometry as a GL_TRIANGLE _STRIP.
 
Using any other types of polys in 3d than triangles, would often result in problems when polys become non-planar.
As each poly can easily be split into triangles, it would be waste of hw resources to make it work with any other types of primitives.
Quads in GL are useful, because texture maps are often represented as rectangular bitmaps, its easier for ppl to use quads as primitives for mapping.
 
So is it Triangles then?

Triangles - the last vector stage before rasterization?

Thanks eveybody for taking part!
 
darkblu said:
thinking of it, i have a question for Simon:
does the povervr (having a strict tile clipping?) actually process planar convex polys (what you get from a clipped tri) at the scanconversion level or does it turn any clipped triangles into fans/strips?
I'm a bit confused as to what you are asking.

If you mean clipping as in, say, foreground plane clipping then on PVR2/3 they must be converted into triangles. (PVR1 could skip the foreground clip)

OTOH, if you mean limiting the rendering of a triangle to the rectangle of pixels contained within a tile, then nothing has to be done.
 
Back
Top