Ce dépot contient un projet de rendu graphique via OpenGL.
La progression est basé sur https://learnopengl.com/.
dependencies/: Toutes les librairies;res/: Ressources (Shaders, textures, map, sons etc...);shaders/: Les différents shaders (vertex et fragment);cube/: Éclairage (severallights, lightsource).model/: Modèles statiques de décor (backpack).outline/: Post-process silhouette.skinned/: Pipeline GPU-skinning (avant-bras, personnages).text/: Rendu de texte bitmap.shape/: 2D shapes (Triangle, Rectangle, Image).
textures/: Les différentes textures à afficher (.png);models/: Modèles statiques de décor (backpack, etc.);rigging/: Modèles skinned (avant-bras, personnages riggués) avec squelette + clips d'animation Assimp;mixamo/: Assets Mixamo —animation/(clips séparés) etmodels/(personnages riggués, ex:Remy.fbx);
fichiers .h & .cpp: Les fichiers headers et sources.
-
Pipeline skinned (
SkinningData.h+AnimationClip.h+Animator.h/.cpp+Model.cpp+res/shaders/skinned/skinned.{vert,frag}): extraction bones/animations via Assimp -> stockage dansVertex.m_boneIDs[4]+Vertex.m_weights[4](auto-padding si > 4 influences) -> upload deuBoneMatrices[100]au GPU. LimiteMAX_BONE_INFLUENCE=4ancrée parstatic_assertdansVertex.h(toute réordonnancement de champs casse la compilation au lieu de dériver en bug GPU silencieux). Asset path:res/rigging/<nom>/<nom>.glb(fallback.fbx), clips Mixamo dansres/rigging/mixamo/animation/. Chargé dansGame::initialize()puis joué parAnimator::update(dt). -
Avant-bras first-person (
ArmsRenderer.h/.cpp): helper isolé qui rend les avant-bras riggués en vue subjective. Encapsule toute la math:skinned shader use + camera-relative model matrix + bone palette upload via setMat4Array + world lights + clear depthen une seule fonction statiqueArmsRenderer::drawFP(camera, shaderManager, lightManager, model, animator). Game loop l'appelle en dernier (après le décor opaque + transparents) avecglClear(GL_DEPTH_BUFFER_BIT)pour que les mains soient toujours visibles. Position/rotation/scale des bras par rapport à la caméra:Constants::FP_ARMS_DOWN/FORWARD/YAW_OFFSET/SCALE(voirconstants.h). -
Collision sphere-vs-AABB (
CollisionManager.h/.cpp+BVHNode.h+AABB.h): sweeping itératif + sliding. BVH statique construit viabuildBVH()au boot pour O(log n) lookup.
Avant de faire tourner ce code sur votre machine, il vous faut (normalement tout est dans les dépendencies):
- C++23;
- GLFW & GLAD pour OpenGL;
- STB pour le chargement des images et les polices d'écritures;
- GLM pour les mathématiques;
- Assimp pour les modèles 3D.
- Installer Visual Studio 2026+
- Lancer le projet "OpenGLProject.sln"
- Compiler (Debug ou Release)