
Originariamente inviata da
shodan
Scusa, ma ho l'impressione che tu ti stia complicando la vita. Non � pi� semplice creare un vettore di puntatori a data, fare delle funzioni che riversino i dati dai vettori_pos, vettori_col, vettori_uv nei rispettivi campi data_pos, data_col, data_uv e poi passare il tutto all'API, come il codice che hai mostrato (tra l'altro leggermente errato)?
In uscita avresti i dati formattati direttamente nei campi di ogni singola struttura data.
Non che non si possa fare in modo alternativo, ma in tal caso devi considerare che, mettiamo, per 5 strutture data devi allocare
sizeof(data) * 5 = 160 bytes. I singoli pacchetti da 32 bytes ( ossia sizeof(data) ) sono la struttura simulata, di cui i primi 3*sizeof(float) sono il campo pos, i successivi 3 * sizeof(float) sono il campo col, e gli ultimi 2 * sizeof(float) sono il campo uv. E questo solo per la prima struttura simulata. In pratica accollandoti il lavoro che fa il compilatore.
Non credo che l'API in questione sia cos� poco furba da fare una parserizzazione del genere. Pi� probabile faccia qualcosa del genere:
codice:
apivulkan(..., void* buffer, size_t num_bytes) {
size_t num_struct = num_bytes / sizeof(data);
struct data **tante_data = (struct data**) buffer;
tante_data[0]->pos[0] = 0.1;
tante_data[0]->pos[1] = 0.2;
etc...
}
E poi non capisco
I dati sono vincolati dalla struttura data. Di che parliamo?