31-08-2010, 03:01 AM
(30-08-2010, 11:48 PM)steve Ha scritto: con irrlicht c'ho fatto molto poco, e purtroppo non ho salvato niente (cancellato tutto quando ho messo la nuova versione di visual studio).Ho controllato non usa altre lib e l'errore hai visto anche tu qual'è.
da quanto vedo l'errore è questo:
node = smgr->addMeshSceneNode(mesh->getMesh(0));
dovrebbe essere:
node = smgr->addMeshSceneNode(mesh);
in oltre ti consiglio di mettere un if(!mesh) che segnala errore, piuttosto che un if(mesh) che esegue se non c'è errore.
ti faccio un esempio per farti capire meglio il perché, almeno secondo me, è meglio fare così.
se fai così:
si il programma viene eseguito e (per esempio) non trova map/brixiaromana.dmf tu sai subito dov'è l'errore perché ti viene scritto. mentre se lo fai come hai fatto tu non appare la mesh (o almeno è quello che mi immagino che succeda, non ho mai provato).Codice:scene::IAnimatedMesh* mesh = smgr->getMesh("map/brixiaromana.dmf");
if(!mesh)
cout << "errore, mesh "map/brixiaromana.dmf" non caricata" // oppure ancora meglio, fatto con MessageBox
node = smgr->addMeshSceneNode(mesh->getMesh(0));
in caso ci fossero tanti oggetti caricati fai meno faresti meno fatica a trovare l'errore con il modo che ti ho descritto io (almeno imho).
se scarichi sorgenti di giochi ti devi anche assicurare che abbiano usato solo irrlicht, se hanno usato anche un motore fisico (o di ai, o di gui, ecc...) a parte non te li compila se li hai anche tu. inoltre (in caso ti passano tutta la soluzione) devi cambiare i link delle librerie, delle lib (ecc...) con i percorsi in base a dove li hai sul tuo pc. senza contare, come hai detto tu, che è facile che siano stati fatti con versioni vecchie di irrlicht e magari ci sono dei comandi obsoleti.
se il codice non è lunghissimo e gli errori non sono tantissimi posta pure che gli do un occhiata e vedo se ci capisco qualcosa.
Non è un errore di linking di librerie, cmq ti passo il link da cui ho scaricato la demo di questa piccola applicazione.
Link