scusate.
Il problema è risolvibile, come visto in altri software opensource serializzando tutti i tipi (di un array di struttura)in un tipo generico char(dei BYTE alla fine).
Ho visto vari sorgenti per questo tipo di software(engine 3d)e tutti ad es per i buffer opengl(degli array di una struttura dati ) gestiscono si i vari tipi , ma alla fine memorizzano uno stream e gli offset tra gli elementi.
Lo stesso opengl vuole tra i suoi parametri per creare un buffer uno stream o meglio: un cast a (void*) per il buffer che è composto da i piu svariati tipi.
non vedo davvero altra soluzione, ad es: un vboManager<T> avra una funzione non template getDataStream che ritornerà uno stream di byte che serve per creare l'oggetto vero e proprio opengl(vbo = un vertexbuffer)e questo puo essere serializzato , quello che conta è memorizzare anche gli offset tra i tipi e i size dei tipi, poi si puo benissimo ricreare il vbo dopo la deserializzazione dei dati.
ad es:
codice:
struct vertexbuffer{
float x,y,z//punti
float nx,ny,nz//normali
int i1,i2,i3//idxbones nella skeleton animtion
}
template<class T>
class vboManager
{
T* data = new T[500]//500 elementi ciascuno con 3 punti , 3 normali e 3 indici bones
}
vboManager<vertexbuffer> vbo;
vbo.data[0].x =1.0;
vbo.data[0].y =1.0;
vbo.data[499].x =1.0;
vbo.data[499].y =0.7;
ecc...
poi creo il vertex vbuffer e trasformo data in uno stream di bytes
vedete soluzioni migliori?
grazie.