Stripped Triangle or Not?
I saw the fastest rendering method on quake 3 is without triangle strips (correct me if i'm wrong...). It uses glDrawElements() of course, but with GL_TRIANGLE for the type of primitives. Why?
Another thing that is boring me is that triangle strip forces you, ideally, to have only one normal and texcoord per point, is it right? Should it be the main reason that quake 3 doesn't uses triangle strip on it's mesh?
thx in advance
Where did you get that much information about the Quake 3 engine from?
Just curious, since the published game source would be much better with that ;-)
Just curious, since the published game source would be much better with that ;-)
on older cards/system, where transfer rate and reducing the amount of vertex data/glVertex calls was important, then triangle strips were the best option when the data would allow for it. Ofcourse, the data wont always allow it (need two texture coords per vertex, or different normals for hard corners, things like that).
These days, indexed triangles in strip order is just as fast and alot damned easier than trying todo pure strips. For example, Doom3 uses index triangles for its render.
These days, indexed triangles in strip order is just as fast and alot damned easier than trying todo pure strips. For example, Doom3 uses index triangles for its render.
from here http://users.skynet.be/fa550206/Slug-Production/Data/OpenGL-Documents/Quake3-Drivers/Quake3-Drivers.htm
very thx phantom
could you point me where i can learn about "indexed triangles in strip order"? :)
could you point me where i can learn about "indexed triangles in strip order"? :)
another question
suppose that i'm using arrays of vertices, normals and textcoordinates and i call glDrawElements() to render my models
glDrawElements() needs an index array to render property and to prevent redundant data
but normally vertices that share same point (vertices that share same polys) doesn't have same textcoordinates... so index array (and glDrawElements()) loses it's goal... or not? o_O
suppose that i'm using arrays of vertices, normals and textcoordinates and i call glDrawElements() to render my models
glDrawElements() needs an index array to render property and to prevent redundant data
but normally vertices that share same point (vertices that share same polys) doesn't have same textcoordinates... so index array (and glDrawElements()) loses it's goal... or not? o_O
'index triangles in strip order' are just what the sentance says they are. You arrange you vertex indices so that while you are sending single triangles down the pipeline you index them like strips, in order to make use of any vertex reuse you can take care of.
If a vertex has to be in the same place, with different properties (such as normal or texture coords) then you have to duplicate it, however in practise this wont be many vertices in most models so the advantage still remains when using indexed arrays (namely the use of the post T&L cache).
If a vertex has to be in the same place, with different properties (such as normal or texture coords) then you have to duplicate it, however in practise this wont be many vertices in most models so the advantage still remains when using indexed arrays (namely the use of the post T&L cache).
strips are the fastest method usually reason being less data said, the major problem with strips are u cant strip most mehses (unless u start adding in degenerants) or unless u use multiple strips, both methods are messy. plain tris are simplier, not to mention the fact that polygon throughput is rarely the bottleneck, eg its not in quake3 or doom3
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement