No hay ninguna mejor práctica. Todo varía según la aplicación que se está desarrollando.
Para el renderizador de juegos no hay necesidad de almacenar vértices tanto en RAM como en VRAM , eso significa que solo necesita mantener la identificación de vbo. La excepción es el terreno donde necesita tener acceso a las posiciones debido a la altura de la ubicación / colisiones del jugador.
¿Necesita tener todos los datos de vértice juntos? Si desea tener múltiples colores para los mismos vértices, como diferentes colores para los mismos modelos de jugadores, juntar todo puede causar pocos obstáculos en el desarrollo.
¿Accede a datos fuera de la clase? Si no, solo terminará con más código como en vertices->position[i]
lugar de positions[i]
. En el diseñador de juegos / modelos, debes acceder a ellos desde afuera, pero no estás accediendo a todos los datos al mismo tiempo cuando modelas, luego accedes a posiciones y cuando estás coloreando, accedes a los colores.
Lo único que juntaría son los valores xyz
( rgb
) en una estructura para un código más agradable:
Vector3 {
GLfloat x,y,z;
};
Color3 {
GLbyte r,g,b;
};
Editar: me gustaría agregar que algunas personas están usando unions
glVertex * 3v, glVertex * 4v, glUniform * v ... más fácil llamando a donde se pasa la matriz en lugar de variables separadas:
union Vector3f {
GLfloat v[3];
struct {
GLfloat x,y,z;
};
};
union Color3b {
GLbyte c[3];
struct {
GLbyte r,g,b;
};
};