Disculpas, iba a agregar un comentario a su hilo de preguntas, pero descubrí que terminé elaborando demasiado. Mi experiencia de desarrollo es desde una perspectiva DX 11, por lo que es posible que parte de esto no se mantenga en OpenGL
La localidad de memoria de los datos ciertamente juega un papel importante. Pero hay algunos otros elementos que juegan en esto, el ancho de los datos como ustedes saben. He tenido algunas GPU y he tenido un gran rendimiento en algunos basado en ciertos puntos de inflexión. Ese es, por ejemplo, en mi viejo AMD r290, si recuerdo, básicamente podría pasar hasta 4 float4s al búfer de vértices sin costo adicional por encima de 1, pero una vez que publiqué> 4, hubo una caída medible (en el marco Velocidad). Esto está puramente fuera de mi recuerdo y también es anecdótico. Pero sostiene que la arquitectura de la GPU está cambiando todo el tiempo, y qué técnicas de nicho que le brindan una ventaja de rendimiento hoy pueden ser la ruina de su rendimiento mañana. YO'
Dicho esto, ha formulado la pregunta sobre el orden de los vértices, y ciertamente eso ayudará marginalmente. La ganancia de rendimiento es cuando se combina esto con buffers de índice que luego permiten al hardware optimizar y almacenar en caché los vértices ya calculados. Ciertamente, puede obtener aún más ganancias de las tiras triangulares, etc., que se ordenaron específicamente según sus pensamientos. La mayoría de las representaciones de modelos que hago son modelos optimizados basados en índices / vértices con instancias, utilizo una pequeña cantidad de búsquedas de efectos de movimiento cíclicos (ramas de árbol, por ejemplo), en estos casos, toda la rama del árbol está buscando el mismo valor. Por lo tanto, el almacenamiento en caché se puede aprovechar aquí también.
Todo lo que puedo decir en resumen de mí mismo es:
- Intenta no pensar demasiado en la optimización al principio, mientras sigues desarrollando tu juego / aplicación, trata de no optimizarlo prematuramente. Si necesita regresar y agregar nuevas capacidades, puede perder todo el esfuerzo. Tienes mi hábito tal vez> <, me encanta tratar de obtener el mejor rendimiento y técnicas
- Las arquitecturas de GPU son variadas, y las fortalezas de uno pueden reflejar debilidades en otro. AMD y Nvidia son famosos por hacer que los desarrolladores optimicen los juegos a su arquitectura, por una razón, cada uno tiene ventajas / desventajas. Tomar el camino intermedio en el desarrollo podría ser el mejor lugar, no use ninguna función basada en proveedores de hardware (opinión aquí). (Además, algunos formatos empaquetados solo existen en AMD).
Estos son solo algunos pensamientos y experiencias que he tenido. Hay muchos libros por ahí en los que debería tener acceso a estos temas. No he visto a muchos prescribir lo que está proponiendo, pero eso no significa que esté mal. Buena suerte.