Ce cours propose une introduction à la programmation en langage C++ via l'application en informatique graphique 3D.
Le langage C++ est le plus utilisé pour l'écriture de logiciels scientifiques de grande envergure nécessitant une interaction temps-réel. Son utilisation couvrant, par exemple, la majorité des logiciels de moteurs de jeux (Unity, Unreal, Godot, moteurs des jeux AAA), modeleurs image/vidéo et 3D (Maya, Blender, Photoshop, Catia, etc.), calculs parallèle (CUDA), frameworks d'apprentissage et de vision (PyTorch, TensorFlow, OpenCV), d'OS (Windows), ou même de web (Chrome, Firefox, AWS, etc.).
Ce cours propose de se familiariser avec les concepts de programmation C++, en particulier la notion de programmation "bas-niveau" impliquant la connaissance fine de l'utilisation mémoire des variables utilisées par le programme. Le cours propose également une ouverture vers les bonnes pratiques de programmation de logiciels de taille importante (au dela de scripts de quelques centaines de lignes), en particulier la notion de modularité et d'architecture logicielle.
Les applications de l'apprentissage du C++ se font via le cas d'application en informatique graphique 3D temps-réel, via l'utilisation de l'API OpenGL. Le cours propose de découvrir les concepts de base de la "programmation graphique", en particulier le rendu d'images, la modélisation, et l'animation 3D efficace, via l'utilisation du C++ et de la programmation sur GPU via shaders. Les concepts présentés permettent de comprendre les mécanismes sous-jacents aux moteurs de rendus graphiques pour des applications plurisdiciplinaires tel que pour le jeu vidéo, les applications de rélaité virtuelles, la visualisation scientifique, l'imagerie médicale et biologiques, en encore la simulation physique.
Le cours est principalement orienté vers la pratique, avec des exercices et un projets final demandant de réaliser une scène 3D animée en langage C++.