Usted puede usar:
GLfloat coordinates[8] = {1.0f, ..., 0.0f};
pero esta es una inicialización en tiempo de compilación: no puede usar ese método en el estándar actual para reinicializar (aunque creo que hay formas de hacerlo en el próximo estándar, que puede no serle de ayuda inmediata).
Las otras dos formas que vienen a la mente son a Blat los contenidos si están fijos:
GLfloat base_coordinates[8] = {1.0f, ..., 0.0f};
GLfloat coordinates[8];
:
memcpy (coordinates, base_coordinates, sizeof (coordinates));
o proporcionar una función que tiene el código de inicialización de todos modos:
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);
mantenimiento en mente, esas elipsis (...
) son marcadores de posición, no cosas para insertar literalmente en el código.
¿Desea devolver un puntero a una variable local, no? Algunas de las cosas que las personas han dicho en las respuestas/comentarios siguientes asumen que las variables involucradas son automáticas o que no lo son. Podría ayudar si especificas. –
Una vez que se inicializa la estructura, no hay una manera fácil de asignar miembros en masa (aparte de hacer una copia de otra estructura con 'memcpy'). A menudo me encuentro deseando tener esta característica. – bta
Creo que su respuesta original es la mejor: es intuitiva, aunque un poco prolija, pero eso no es una preocupación para los compiladores modernos. –