Pitääpäs tulla tänne purkamaan paineita tästä riivatusta formaatista. OBJ-3D-tiedostoformaatti sisältää nimittäin indeksilistan erikseen vertekseille, tekstuureille ja normaaleille.
http://en.wikipedia.org/wiki/Wavefront_.obj_file
OpenGL ei mun tietääkseni tue kuin yhtenäistä indeksilistaa pelkille vertekseille. Näinollen joka verteksiä kohti pitää tekstuurit ja normaalit olla samassa indeksissä taulukoissaan.
Nyt kun sitten oletetaan että voi olla OBJ tiedosto, esim kuutio jolla on 8 verteksiä, 6 pintaa, 6 normaalia ja 4 tekstuurikoordinaattia (kun kaikki sivut näyttää samalta)... tai toisaalta kuutio voi yhtä hyvin olla 36 verteksiä, 12 kolmiota, 36 normaalia ja 36 tekstuurikoordinaattia. Että yrittää sitä nyt tehdä optimaalisen latausfunktion jotta pää hajoaapi.
Eli optimaalinen tapa olis mun tietääkseni että ladataan kaikki taulukot ensin tilapäiseen muistiin, ja sitten käydään pinnat läpi ja luodaan duplikaatteja kun tekstuurit tai normaalit eroaa aiemmin läpi käydyistä.
Ensin mainitusta kuutiosta pitäisi siis saada ulos:
24 verteksiä, 6 pintaa, 24 normaalia, 24 tekstuurikoordinaattia.
Voihan sen tehdä niin, että muodostetaan yksi vektori pisteiden, normaalien ja tekstuurien koordinaateille. Face-tietueessa on sitten omat vektorit, joissa on niiden koordinaattien indeksit, joita facessa tarvitaan. Näin ollen sama facen tietue passaa sekä kolmioille, että neliöille. Piirtäessä vain pitää ottaa huomioon, onko pisteiden vektori komlen vai neljän mittainen. Materiaalien etsiminen onkin sitten oma hommansa, mutta samaan tyyliin sekin järjestyy.
Toivottavasti tuosta jotakin selkoa sai :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.