Comme je l'avais dit dans mes précédents commits, je travaille depuis un bon bout de temps sur la mise à jour des bibliothèques & compilateurs utilisés par Metafor. Pour rappel, les buts sont les suivants:
J'ai donc porté le code pour utiliser le Visual Studio 2015 et j'en ai profité pour mettre à jour toutes mes libs. Le code est donc compilable avec les toutes dernières versions de toutes les bibliothèques, sauf python qui reste en 2.7.x. La migration vers python 3 sera effectuée plus tard (c'est un travail énorme).
Le Visual Studio 2017 est sorti la semaine passée mais n'est pas encore utilisable (à cause de Parasolid entre autres qui ne le supporte pas encore).
Le code reste évidemment compilable avec Visual Studio 2012.
En pratique, voici les versions utilisées sur mon PC (voir aussi Versions des libs/progs installés sur les machines du service):
{}
autour d'un bloc for
alors que celles-ci ne sont pas nécessaires).VTK_RENDERNING_BACKEND
vaut OpenGL2
par défaut, ce qui correspond à de l'OpenGL 3.4 si j'ai bien compris) qui devrait améliorer grandement les perfs générales de VTK sur nos machines. Par exemple, tous les glyphs devraient être rendus à l'aide de “vertex shaders” au niveau du GPU (c'est-à-dire du code qui tourne directement sur le GPU chaque fois qu'un vertex est affiché). Malheureusement (pour moi) cette nouvelle implémentation moderne n'est pas utilisable sous Virtualbox qui ne gère que du vieux OpenGL 1.1. J'ai donc dû compiler 2 versions; une pour ma VBox sous linux à l'ULg et une pour ma machine Windows à la maison.Evidemment, il y a toutes sortes de petits “trucs” pour construire les libs (bien que la liste soit très courte par rapport à ce qu'il fallait savoir avant). J'ai fait un mémo que je donnerai à Luc lorsqu'il aura le temps de migrer ses libs. D'ici là, ne changez pas de compilateur à moins que vous vouliez compiler votre propre set de libs. Si c'était le cas, n'hésitez pas à me le dire et je vous aiderai. J'ai fait un petit schéma qui permet de voir les dépendances d'un coup d'oeil:
Une fois que tout le monde aura migré vers VS14 on pourra envisager de supprimer le vieux code VTK5 / Qt4 (après update des stations) et on pourra nettoyer pas mal de choses (boucles peu lisibles utilisant explicitement des itérateurs par exemple) avec le C++11.
inline
en trop dans un fichier CPP qui provoquait un “unresolved” avec clang
).mtQt/osxHelper.mm
). J'espère que ce problème sera résolu dans les prochaines versions de VTK.Le longbone ne passait pas avec Visual Studio 2015. La raison est la même que précédemment: ce test utilise de manière intensive les fonctions VTK et tout changement de VTK change le maillage produit. Ce “nouveau” maillage passe alors dans une routine de nettoyage de Cédric Laurent qui est buguée et qui provoque, dans certains cas, des maillages avec des trous. J'ai donc modifié une nouvelle fois le test pour qu'il passe. Cette fois-ci j'ai légèrement modifié le rayon des vis.
— boman 2017/03/15 06:43