La guía de programación de OpenGL ES explica que debe evitar datos de vértices desalineados y ofrece un ejemplo de alineación de datos a bloques de 4 bytes.Qué tan importante es la alineación en los datos de vértices abiertos en iOS
Sin embargo, en la mayoría del material de demostración y tutoriales que he encontrado en Internet no veo a nadie haciendo esto. El siguiente ejemplo es de un proyecto de demostración en 71 Cuadrados:
static const SSTexturedVertexData3D EnemyFighterVertexData[] = {
{/*v:*/{1.987003, -0.692074, -1.720503}, /*n:*/{0.946379, -0.165685, -0.277261}, /*t:*/{0.972816, 0.024320}},
¿Y cómo lo harías de todos modos? Añadir un dummy 0.0 a la v y n y 2 de ellos a la t?
Supongo que si solo está cargando los datos de vértice una vez por aplicación, no importaría mucho, pero si su enlace y reenlace a diferentes matrices en cada fotograma procesado sería importante. Mi plan es combinar todos mis arreglos en uno de todos modos, pero tengo curiosidad.
¿Está seguro de que lo anterior no está alineado con un límite de 4 bytes? Si el código que muestra utiliza GLfloats, esos son tipos de datos de 32 bits (4 bytes), por lo que no importa cuántos de ellos haya, siempre están alineados con un límite de 4 bytes. La guía se refiere a los pantalones cortos y otros tipos de datos. –
Me estaba preguntando eso. ¡Gracias! Deberías poner eso como respuesta para poder marcarlo. – badweasel
Podría, pero no responde la pregunta más fundamental de cuán importante es el alineamiento de bytes de los datos de vértices para el rendimiento. Eso podría requerir algunos puntos de referencia para ilustrar completamente. –