È può usare:
GLfloat coordinates[8] = {1.0f, ..., 0.0f};
ma questa è un'inizializzazione in fase di compilazione - non è possibile utilizzare il metodo che nello standard corrente di ri-inizializzazione (anche se penso che ci sono modi per farlo nella norma cui è decisivo, che non può immediatamente aiutarvi).
Gli altri due modi che vengono in mente sono a blat i contenuti se sono fissati:
GLfloat base_coordinates[8] = {1.0f, ..., 0.0f};
GLfloat coordinates[8];
:
memcpy (coordinates, base_coordinates, sizeof (coordinates));
o fornire una funzione che si presenta come il codice di inizializzazione in ogni caso:
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);
keeping queste ellissi (...
) sono segnaposto, non cose da inserire letteralmente nel codice.
State restituendo un puntatore a una variabile locale, là? Alcune delle cose che le persone hanno detto nelle risposte/commenti sottostanti presuppongono che le variabili coinvolte siano quelle automatiche o che non lo siano. Potrebbe aiutare se si specifica. –
volta struct viene inizializzato, non v'è un modo semplice per i membri massa assegnazione (altro che fare una copia di un altro struct con 'memcpy'). Spesso mi trovo a desiderare di avere questa caratteristica. – bta
Penso che la tua risposta originale è la migliore - è intuitivo, anche se un po 'prolisso, ma che non è una preoccupazione per i compilatori moderni. –