Vi avevo avvertito che stavo lavorando ad un piccolo progetto didattico. Sono quindi lieto di annunciarvi che finalmente è disponibile una versione funzionante di questa piccola libreria.
OpenGLoader è un semplicissimo mesh-loader (sistema che si occupa di caricare in memoria la struttura 3D di un oggetto scritta in un file) scritto in C++ che potete utilizzare per caricare dei modelli pre-costruiti all’interno delle vostre applicazioni. Questa libreria non ha affatto intenzione di sostituirsi a librerie professionali ma vuole essere una via estremamente breve per inserire mesh complessi in programmi di complessità medio-bassa.
Il primo intento di OpenGLoader è di essere istruttivo. Il sorgente è volutamente semplice, super modulare e “all-inclusive” ovvero non fa uso di alcuna libreria esterna (escluse le OpenGL, ovviamente).
Il secondo intento è di essere estremamente veloce da usare. Infatti una mesh può essere caricata con 2 comandi:
gloDLInitFile("/home/davide/scimmia_tr.obj", gloReader::GLO_OBJ);
GLuint dl;
gloDLRead(&dl);
La sintassi è estremamente semplice: si inizializza il tutto con gloDLInitFile
passando come parametro la posizione e il formato del file. Poi si genera un display-list tramite gloDLRead
.
Per chi non conoscesse le display list vi dico che per essere disegnate basta dare questi comandi:
glColor3f(1.0, 1.0, 1.0);
glCallList(dl);
glFlush();
Il programma è ancora molto immaturo, funziona ma non è stato ancora testato a dovere e, inoltre, credo che dia ancora qualche problema di memory-leak dato che quell’aspetto lo devo ancora valutare accuratamente. Quindi usatelo per giocarci ma vi sconsiglio ancora di usarlo per applicazioni “serie”.
La versione inoltre è estremamente limitata rispetto alle caratteristiche che ho programmato per la versione completa. Ecco alcune limitazioni:
- Non supporta la decodifica delle texture.
- Non supporta la decodifica dei materiali.
- Supporta esclusivamente i file nel formato .OBJ.
- Output solamente sotto forma di display-list.
Tuttavia questo basta e avanza per poter usare, ad esempio, Blender per costruire modelli, esportarli in OBJ e importarli nella vostra applicazione.
Detto questo vi lascio alla pagina di git-hub dove trovate il codice sorgente e il download della documentazione delle API. In attesa che completi una documentazione più dettagliata. 🙂