Estoy usando OpenGL ES 2.0 Tengo un montón de quads para dibujar, me encantaría poder pasar solo 4 vértices por quad como si estuviera usando GL_QUADS, pero básicamente solo quiero saber la mejor manera de dibujar un Montón de quads separados.
Hasta ahora, lo que he encontrado podría hacer: -GL_TRIANGLES (6 vértices por quad) -Degenerar GL_TRIANGLE_STRIP (6 vértices por quad)
Posibilidades que he encontrado: -GL_TRIANGLE_STRIPS con un valor de índice especial que restablece la tira cuádruple (esto significaría 5 índices por cuádruple, pero no creo que esto sea posible es OpenGL ES 2.0)
3, 4,
4, 5, 6, 7}. Los triángulos degenerados son3,3,4
y3,4,4
. ¿Vale la pena hacer esto? No, a menos que tus quads tiendan a venir en pares (o más) con bordes comunes. Si el segundo quad es {3, 2, 4, 5}, entonces la tira es{0,1,3,2,5,4}
.{0,1,2, 0,2,3, 4,5,6, 4,6,7}
o es igualmente bueno{0,1,2, 2,3,0, 4,5,6, 6,7,4}
. Buena clase para ayudar a esto es glText-Android / SpriteBatchEl uso de buffers de índice no es necesariamente más rápido, como se indica en los documentos de Apple, "Para un mejor rendimiento, sus modelos deben enviarse como una sola tira triangular no indexada usando glDrawArrays" .
Entonces, aunque a
GL_TRIANGLE_STRIP
lo hará en 4 vértices sin necesidad de un búfer de índice, y puede usar un búfer de índice, es bastante lamentable intentar "guardar" la repetición de 2 vértices . Por esta razón, te sugiero que dibujes 2 separadosGL_TRIANGLES
y repitas los 2 vértices en la diagonal .fuente
La gran ganancia en el escritorio es mover los datos a GL_STATIC_DRAW VBO. Presumiblemente, esto también es cierto en la GPU MBX de iPhone.
fuente
Usar
GL_TRIANGLE_FAN
para un quad usa 4 vértices, no 6.fuente
GL_TRIANGLE_STRIP
, como ya han señalado otras respuestas.