Vous peut utiliser:
GLfloat coordinates[8] = {1.0f, ..., 0.0f};
mais il s'agit d'une initialisation à la compilation - vous ne pouvez pas utiliser cette méthode dans la norme actuelle pour la réinitialiser (bien que je pense qu'il y ait des façons de le faire dans la prochaine norme, ce qui peut ne pas vous aider immédiatement).
Les deux autres moyens qui viennent à l'esprit sont à Blat le contenu s'ils sont fixés:
GLfloat base_coordinates[8] = {1.0f, ..., 0.0f};
GLfloat coordinates[8];
:
memcpy (coordinates, base_coordinates, sizeof (coordinates));
ou fournissent une fonction qui ressemble à votre code d'initialisation de toute façon:
void setCoords (float *p0, float p1, ..., float p8) {
p0[0] = p1; p0[1] = p2; p0[2] = p3; p0[3] = p4;
p0[4] = p5; p0[5] = p6; p0[6] = p7; p0[7] = p8;
}
:
setCoords (coordinates, 1.0f, ..., 0.0f);
tenue à l'esprit ces ellipses (...
) sont des espaces réservés, pas des choses à insérer littéralement dans le code.
Retournez-vous un pointeur vers une variable locale, il? Certaines des choses que les gens ont dites dans les réponses/commentaires ci-dessous supposent soit que les variables impliquées sont automatiques, soit qu'elles ne le sont pas. Pourrait aider si vous spécifiez. –
Une fois la structure initialisée, il n'y a pas de moyen facile d'assigner en masse des membres (autre que de faire une copie d'une autre structure avec 'memcpy'). Je me retrouve souvent en souhaitant avoir cette fonctionnalité. – bta
Je pense que votre réponse originale est la meilleure - elle est intuitive, quoique un peu verbeuse, mais ce n'est pas un problème pour les compilateurs modernes. –