Mon . 20 Aug 2020
TR | RU | UK | KK | BE |

Triangle strip

triangle striped bikini tops, triangle stripe canvas 1999 mexican artwork
A triangle strip is a series of connected triangles, sharing vertices, allowing for more efficient memory usage for computer graphics They are more efficient than triangle lists without indexing, but usually equally fast or slower than indexed triangle lists12 The primary reason to use triangle strips is to reduce the amount of data needed to create a series of triangles The number of vertices stored in memory is reduced from 3N to N+2, where N is the number of triangles to be drawn This allows for less use of disk space, as well as making them faster to load into RAM

For example, the four triangles in the diagram, without using triangle strips, would have to be stored and interpreted as four separate triangles: ABC, CBD, CDE, and EDF However, using a triangle strip, they can be stored simply as a sequence of vertices ABCDEF This sequence would be decoded as a set of triangles ABC, BCD, CDE and DEF then every even-numbered with counting starting from one triangle would be reversed resulting in the original triangles

Contents

  • 1 OpenGL implementation
  • 2 Properties and construction
  • 3 References
  • 4 See also

OpenGL implementationedit

Model of two triangles drawn in OpenGL using triangle strips

OpenGL has built-in support for triangle strips Fixed function OpenGL deprecated in OpenGL 30 has support for triangle strips using immediate mode and the glBegin, glVertex, and glEnd functions Newer versions support triangle strips using glDrawElements and glDrawArrays

To draw a triangle strip using immediate mode OpenGL, glBegin must be passed the argument GL_TRIANGLE_STRIP, which notifies OpenGL a triangle strip is about to be drawn The glVertex family of functions specify the coordinates for each vertex in the triangle strip For more information, consult The OpenGL Redbook3

To draw the triangle strip in the diagram using immediate mode OpenGL, the code is as follows:

//Vertices below are in Clockwise orientation //Default setting for glFrontFace is Counter-clockwise glFrontFaceGL_CW; glBeginGL_TRIANGLE_STRIP; glVertex3f 00f, 10f, 00f ; //vertex 1 glVertex3f 00f, 00f, 00f ; //vertex 2 glVertex3f 10f, 10f, 00f ; //vertex 3 glVertex3f 15f, 00f, 00f ; //vertex 4 glEnd;

Note that only one additional vertex is needed to draw the second triangle In OpenGL, the order in which the vertices are specified is important so that surface normals are consistent

Quoted directly from the OpenGL Programming Guide:

GL_TRIANGLE_STRIP

Draws a series of triangles three-sided polygons using vertices v0, v1, v2, then v2, v1, v3 note the order, then v2, v3, v4, and so on The ordering is to ensure that the triangles are all drawn with the same orientation so that the strip can correctly form part of a surface

It's even more clearer within the manual pages4:

Draws a connected group of triangles One triangle is defined for each vertex presented after the first two vertices For odd n, vertices n, n+1, and n+2 define triangle n For even n, vertices n+1, n, and n+2 define triangle n N-2 triangles are drawn

The above code sample and diagram demonstrate triangles drawn in a clockwise orientation For those to be considered front-facing, a preceding call to glFrontFaceGL_CW is necessary, which otherwise has an initial value of GL_CCW meaning that triangles drawn counter-clockwise are front-facing by default5 This is significant if glEnableGL_CULL_FACE and glCullFaceGL_BACK are already active GL_BACK by default6, because back-facing triangles will be culled, so will not be drawn and will not appear on-screen at all7

Properties and constructionedit

It follows from definition that a subsequence of vertices of a triangle strip also represents a triangle strip However, if this substrip starts at an even with 1-based counting vertex, then the resulting triangles will change their orientation For example a substrip BCDEF would represent triangles: BCD,CED,DEF

Similarly, reversal of strips’ vertices will result in the same set of triangles if the strip has an even number of vertices eg strip FEDCBA will represent the same triangles FED,ECD,DCB,CAB as the original strip However, if a strip has odd an number of vertices then the reversed strip will represent triangles with opposite orientation For example, reversal of a strip ABCDE will result in strip EDCBA which represents triangles EDC, DBC, CBA

Converting a general polygon mesh to a single long strip was until recently generally not possible Usually the triangle strips are analogous to a set of edge loops, and poles on the model are represented by triangle fans Tools such as Stripe8 or FTSG9 represent the model as several strips Optimally grouping a set of triangles into sequential strips has been proven NP-complete10

Alternatively, a complete object can be described as a degenerate strip, which contains zero-area triangles that the processing software or hardware will discard The degenerate triangles effectively introduce discontinuities or "jumps" to the strip For example, the mesh in the diagram could also be represented as ABCDDFFEDC, which would be interpreted as triangles ABC CBD CDD DDF DFF FFE FED DEC degenerate triangles marked with italics Notice how this strip first builds two triangles from the left, then restarts and builds the remaining two from the right

While discontinuities in triangle strips can always be implemented by resending vertices, APIs sometimes explicitly support this feature IRIS GL supported Swaps flipping two subsequent vertices in a strip, a feature relied on by early algorithms such as the SGI algorithm Recently OpenGL/DirectX can render multiple triangle strips without degenerated triangles using Primitive Restart feature

Referencesedit

  1. ^ http://developerapplecom/library/ios/#DOCUMENTATION/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexDatahtml
  2. ^ http://hacksoflifeblogspotcom/2010/01/to-strip-or-not-to-striphtml
  3. ^ The OpenGL Redbook
  4. ^ 1
  5. ^ glFrontFace
  6. ^ glCullFace
  7. ^ OpenGL FAQ / 10 Clipping, Culling, and Visibility Testing
  8. ^ Azanli, Elvir Stripe, retrieved on March 28, 2007
  9. ^ Xiang, Xinyu FTSG, retrieved on January 21, 2011 link is no longer valid
  10. ^ Regina Estkowski, Joseph S B Mitchell, Xinyu Xiang Optimal decomposition of polygonal models into triangle strips In Proceedings of Symposium on Computational Geometry'2002 pp254~263 url=http://wwwamssunysbedu/~jsbm/papers/p151-mitchellpdf url=http://portalacmorg/citationcfmid=513431

See alsoedit

  • Triangle
  • Triangle fan
  • Computer graphics
  • Graphics cards
  • Optimization computer science

triangle stripe anne cole, triangle stripe art piece, triangle stripe canvas 1990s hispanic art, triangle stripe canvas 1999 mexican artwork, triangle stripe graphic design, triangle stripe rectangle quilt, triangle striped bikini tops, triangle striped red bathing suit top, triangle stripes, triangle strips


Triangle strip Information about

Triangle strip


  • user icon

    Triangle strip beatiful post thanks!

    29.10.2014


Triangle strip
Triangle strip
Triangle strip viewing the topic.
Triangle strip what, Triangle strip who, Triangle strip explanation

There are excerpts from wikipedia on this article and video

Random Posts

La Porte, Indiana

La Porte, Indiana

La Porte French for "The Door" is a city in LaPorte County, Indiana, United States, of which it is t...
Fernando Montes de Oca Fencing Hall

Fernando Montes de Oca Fencing Hall

The Fernando Montes de Oca Fencing Hall is an indoor sports venue located in the Magdalena Mixhuca S...
My Everything (The Grace song)

My Everything (The Grace song)

"My Everything" was Grace's 3rd single under the SM Entertainment, released on November 6, 2006 Unli...
Turkish Straits

Turkish Straits

The Turkish Straits Turkish: Türk Boğazları are a series of internationally significant waterways in...