top of page

Le moteur ECO

image réalisée avec OskyAstro

ECO est un moteur 3d en c++ pour OpenGL, ouvert. Vous y trouverez tout un tas de techniques que vous pouvez librement télécharger et utiliser.

 

J'ai cherché à comprendre comment se faisaient les choses, les dll's sont donc limitées à FreeType pour décoder les polices ttf et otf, Fmodex pour les sons, et Glew32 car je suis sous Windows.

 

Si votre souhait est seulement de programmer un jeu, sans vous soucier de ce qui se passe en interne, il vaut mieux vous tourner vers Unity, Unreal Engine, ou autre.

Je développe depuis très longtemps, en basic, puis en C, puis en C++, passant à openGL 2 puis openGL 3.

J'ai fait mes bases sur les incontournables Casse-brique, Tetris, Packman, etc. Très utile pour apprendre à programmer, et ordonner son code !

D'ailleurs, avec De profondis, vous verrez comment mettre correctement en place un programme.

>> Téléchargez ECO (190 Mo) version 11-2024 >>

!!! bug dans OFbobuffer !!! J'ai oublié la ligne m_dst = dst dans la fonction create(dst, param)

(une mise à jour sera effectuée en decembre)

Mode d'emploi

Mes repères sont 1 pour 1 mètre, z pour la verticale. Notez que mes matrices sont "horizontales".

Pour bouger la caméra, utilisez le pavé numérique.

Vous trouverez un exécutable dans les exemples, base.exe, qui est le fichier compilé sous Windows.

shader et matrice

si votre matrice est horizontale, remplacez (dans vos shaders, setMVP, setVP, setModel ... ) :

glUniformMatrix4fv(m_vp, 1, GL_TRUE, vp.getFv());

par :

glUniformMatrix4fv(m_vp, 1, GL_FALSE, (accès aux valeurs));

​​

Les contrôles pour l'interface sont le plus souvent bâtis selon une norme create(dst, texParam, src).

 

src C'est le rectangle source, x et y étant indiqués selon la méthode classique en informatique, à savoir 0,0 représente le coin supérieur gauche de l'écran.

dst Est le rectangle destination, en OpenGL, et donc 0,0, représente le coin gauche inférieur de l'écran.

texParam Est la référence de texture à utiliser (voir OTextureList), avec son id, sa largeur et sa hauteur (texParam.id .w .h).

Les mises à jour

prochaine mise à jour : décembre

mise à jour du 11/2024

 

* ODshGeoMask devient ODshMask et ODsMaskClipZ( pour la 'reflection' de l'eau), avec une amélioration des normales et donc du rendu. Les principaux defered shader de 'reflection' ont été ajoutés.

* ODshFreeze a été ajouté, il permet de créer un état 'gelé' sur un personnage.

* Le OMesh_gltf n'est pas complet : il ne charge toujours pas les fichiers d'animations sans os, ce qui provoque un bug d'affichage (utilisez Tmeca_obj en attendant). Le code sera intégré bientôt.

* OCollision a été amélioré (la détection du sol est consolidée et ne bogue plus), l'autre partie sera simplifiée.

* OppRain et OppFog on été revus et corrigés (post-process pluie et brouillard), OppSnow ajouté.

* OCamera a été modifiée (pour l'amélioration de la scène 'dialogue') et le sera encore.

mise à jour du 10/2024

La mise à jour concerne l'introduction des « compute shader » dans OShader et ODshader ; la suppression des OFboBuffer3d et OFboWindow3d, obsolètes (qui servaient à faire des miroirs, ce que la nouvelle scène de test vous montre) ; l'amélioration de OFboBuffer (qui garde la qualité GL_R32F pour le miroir) ; l'amélioration de OTextureList dont on peut modifier les filtres à sa guise.

Un defered shader ODshGeoClipZ (pour les effets de 'reflection' d'eau) fait son apparition (ne contrôle que la verticale) ; ainsi qu'un ODshGeoTree (pour animer les arbres).

 

OMesh_gltf : (le fichier est aussi dans la scène gltf)

> correction du chargement interne des images glb (dans _load_material) : il faut procéder à un double contrôle du nom interne pour obtenir le bon nom de l'image ( ? dans quel but ? )

> la verticale de base du fichier est mieux interprétée

> correction de la fonction _vao qui était désactivée à l'intérieur de la boucle !

> echec > placement correct des objets non liés au squelette (les haches du barbare par exemple) ; c'est secondaire dans la mesure où la démo vous montrera comment ajouter et enlever des équipements à un personnage.

bottom of page