-
Bonjour,
Alors j'ai regardé un peu le code.
C'est assez difficile a lire car tu mélange un peu le C++ et le C. Quand c'est possible essaye d'éviter d'utiliser des variables globales. Pour ce qui est des "new", c'est un peu le noyau de C++ donc ce serait bien que tu te documente un peu sur comment ça marche car sinon tu va vite te retrouver avec un programme qui explose. Voici un lien assez complet sur C++ (en anglais): http://www.parashift.com/c++-faq-lite/
Essaye aussi de regarder ce qu'est un smart pointer. J'ai vu que tu en utilisait déja dans certaine partie de ton code (osg::ref_ptr)
Finalement, essaye d'éviter de faire des new a chaque frame. Si ton programme tourne a 60 frames par second et que tu fait des new sans gérer la mémoire derrière ton programme va pas tenir 10 minutes avant de ne plus avoir de mémoire disponible.
Maintenant pour ta dernière question je ne suis pas non plus un expert la dedans, mais il y a pas mal de doc la dessus sur le net. En anglais ça s'appelle bounding volume hierarchy (BVH) En gros le principe serait de séparer ta dent un plusieurs petite partie. Chaque petite partie comprendrait des triangles situé dans différente partie de l'espace 3D. J'imagine que ca tu avais déja compris. Maintenant un algorithme qui sépare tes triangles dans l'espace je ne peux pas te donner désolé. Peux être que ça pourra t'aider: http://en.wikipedia.org/wiki/Binary_space_partitioning