Il n'y a pas de meilleure pratique. Tout varie selon l'application en cours de développement.
Pour le rendu de jeu, il n'est pas nécessaire de stocker les sommets dans la RAM et la VRAM , ce qui signifie que vous devez conserver uniquement l'ID vbo. L'exception est le terrain où vous devez avoir accès à des positions en raison du placement / des collisions des joueurs en hauteur.
Avez-vous besoin d'avoir toutes les données de sommet ensemble? Si vous voulez avoir plusieurs couleurs pour les mêmes sommets comme des couleurs différentes pour les mêmes modèles de joueurs, tout mettre ensemble peut causer peu d'obstacles au développement.
Accédez-vous aux données en dehors de la classe? Si non, vous ne vous retrouverez qu'avec plus de code comme vertices->position[i]
au lieu de positions[i]
. Dans le concepteur de jeu / modèle, vous devez y accéder de l'extérieur, mais vous n'accédez pas à toutes les données en même temps lorsque vous modélisez, vous accédez à des positions et lorsque vous coloriez, vous accédez à des couleurs.
La seule chose que je mettrais ensemble est xyz
( rgb
) les valeurs dans une structure pour un code plus agréable:
Vector3 {
GLfloat x,y,z;
};
Color3 {
GLbyte r,g,b;
};
Edit: Je voudrais ajouter que certaines personnes utilisent unions
plus facilement glVertex * 3v, glVertex * 4v, glUniform * v ... en appelant où le tableau est passé au lieu de variables séparées:
union Vector3f {
GLfloat v[3];
struct {
GLfloat x,y,z;
};
};
union Color3b {
GLbyte c[3];
struct {
GLbyte r,g,b;
};
};