Quote Originariamente inviata da shodan Visualizza il messaggio
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?
si hai ragione , scusa avevo poco tempo e ho buttato giu velocemente dicendo delle cavolate.
1.Cosa Voglio fare?
vorrei creare una libreria template che mi assista e mi aiuti a configurare vulkan (il nuovo opengl)
Come hai intuito e mi hai detto che mi sto complicando la vita � che serve una struttura vertex dl genere:
codice:
struct vertex
{
   glm::vec3 pos;
   glm::vec2 UV
}
ecc....

io vorrei aggiungere un wrapper attorno ai tipi che mi consenta di poter inserire altri dati che servono per la configurazione. una cosa cosi:
struct vertex
{
   wrapper<glm::vec3> pos;
   wrapper<glm::vec2> UV
}
e poi passare il vertex come argomento template ad un altra classe manager.
cosi :
codice:
template <class V>
class CManager{
typedef typename V dati

}
in modo che possa fare una cosa del genere :
CManager<Vertex> manager;
manager.dati.pos.setBinding(.....
manager.dati.UV.setBinding....
manager.dati.pos.setvalue(glm::vec3(1.0f,1.0f,1.0f,1.0f)
cosi che estendendo il wrapper posso inserire tutte le propriet� che voglio.
Il mio problema � "portarle a casa" il wrapper � indipendente all interno della struttura e non ho accesso ai suoi risultati senza complicarmi appunto la vita.
� una cosa che faccio nel tempo libero per imparare un po i template e ho visto che esistono le typelist posso fare qualcosa di meglio con le typelist secondo te?
HO scelto i template in vulkan perch� ha un ampia fase di configurazione a design time e praticamente la parte dinamica � piccolissima.
In pratica per velocizzare l'api si configura tutto in anticipo e poi si richiama la funzione draw per intenderci e minimizzare.

Ora se per te le typelist non sono la soluzione dimmelo subito altrimenti senza loky con il c++ 11 si possono utilizzare?
Ho visto in modern c++ programming che spiega come creare oggetti da una typelist e accederci tranquillamente con un indice.
ciao.
ps.non ho obblighi di tempo o consegne � solo una cosa che faccio io per imparare quindi non c'� fretta
Grazie e scusa shodan