title: Indexed GL_TRIANGLES vs. indexed GL_TRIANGLE_STRIP
body: <p>There has been quite a buzz about rendering performance between indexed triangles or triangle strips. But I believe there is a case that has not been considered enough.</p>
  
  <p>Indexed triangles are rendered like this in OpenGl:</p>
  
  <pre><code>glDrawElements(GL_TRIANGLES, ...);
  </code></pre>
  
  <p>But for some reason a lot of people consider rendering strips only in this way:</p>
  
  <pre><code>glDrawArrays(GL_TRIANGLE_STRIP, ...);
  </code></pre>
  
  <p>Out there there are some very good indexers (Forsyth, Tipsify to name a few) that optimize your mesh to be convenient for the GPU transform cache to be rendered in GL_TRIANGLES mode. Ideally they can achieve like 0.5 rendered vertices per triangle or something like that.</p>
  
  <p>But why not doing this?</p>
  
  <pre><code>glDrawElements(GL_TRIANGLE_STRIP, ...);
  </code></pre>
  
  <p>I mean, you combine the low index bandwidth of strip rendering with the efficient GPU transform cache usage that the above indexers provide. With few modifications, am I right in saying that a strip indexer that optimizes the strip to be also Tcache-friendly can be a good idea?</p>
  
  <p>Probably it won't reach the 0.5 goal, but at least a 0.6 perhaps? Also, don't forget the massive index bandwidth gain (potentially one third against GL_TRIANGLES).</p>