top of page
oskyearth_2.png

images réalisée avec OSkyEarth (exemple dans "scène de test")

oskyearth_1.png

ECO est moteur 3d, un ensemble de fonctions écrites en C++, pour OpenGL 3.3 et plus, destinée à ceux qui veulent comprendre comment ça marche.

J'utilise donc un minimum de Dll : FreeType et Fmod pour le son (Glew car je suis sous Windows).

Notez que ma verticale est 'z', que mon échelle est 1 pour 1 mètre, et que ma matrice est 'horizontale' (c'est important pour les shaders ; il faudra convertir si vous utilisez Glm).

 

Le code évolue constamment, il n'est donc pas exempt de bug ou de manque : à vous de le compléter !

 

Tous les exemples disposent d'un exe > base.exe, compilé sous Windows, pour visualiser le résultat.

S'il devait y avoir une licence, elle serait MIT.

ECO contient les shader courant, les defered shader, les shader post_process. Il y a les controls d'interfaces les plus utilisés (label, button, buttonRbt, listes diverses). Vous y trouverez les éléments mathématiques mat4, rect, vec4, vec3, vec2. Pour les objets, il y a deux chargeur : pour obj-mtl et gltf (voir « Photo » pour leur utilisation). Et, bien entendu, des cameras, billboard, collision, courbes nurbs, …

Premiers combat dans
De Profondis !

version 03/2026
mise à jour du site au début de chaque mois)

Les mises à jour

mise à jour du 03/2026

* OMesh_obj a été modernisé, avec un passage en subBuffer et une triangulation automatique en entrée.

* La classe OJoystick (pour Xbox, donc dans le dossier ECO/systeme/) a été mise à jour.

* La gestion des événements à été modernisée avec l'utilisation de :

> gestion du temps

> récupération des évènements (ajout de la classe OEventManager dans ECO/systeme + OMouse + OKeyboard)

> cycle() / update() = gestion des évènements

> draw() / render() = affichage

* la classe OTextureList a été corrigée et modernisée. Elle utilise désormais un std::unordered_map pour stocker les textures et glTexStorage2D.

mise à jour du 02/2026

glLineWidth(), instruction obsolète et non prise en compte par les carte récentes, imposait une nouvelle façon de faire les contours des personnages. C'est fait avec OppOutline, un shader post process (exemple dans scene test). Il a fallu adapter ODshBuffer et ODshGeo (defered buffer et shader geometry), ODshHole.

Pour ma nouvelleclasse de drapeau, low (pour des drapeux sur les tours d'un château), hig pour une simulation de frapeau flottant au vent, il a fallu modifier ODshShader et OShShader pour qu'ils acceptent les compute shader (la porte est ouverte!)

correctif du 05/01/2026

OSound a été corrigée quant à sa libération (l'ancienne version était plus souple, ou ne fonctionnait pas de la même manière).

 

OFboBuffer : dans _setShader, corrigez : il ne faut pas de translate !

 

modelview.loadIdentity();

//modelview.translate(m_dst.x, m_dst.y, 0);

 

(à quel moment ais je pu remettre cette ligne ? )

mise à jour du 01/2026

ODFboWater est devenu ODBuffer_water, plus logique.

 

OSound a été modifiée en fonction de la version 2.3 de fmod.

 

OFonte est utilisée avec la version 2.14.1 de freetype (si vous utilisez libpng.a et brotli pensez à ajouter les « include libpng.h » )

Libfreetype.a compilé pour Windows est disponible dans « trucs et astuces ».

 

OSkyEarth est ici en version corrigée :

le répertoire des objets peut être modifié (indispensable pour que le programme fonctionne hors ECO/ ).

on peut modifier la classe pour qu'elle accepte plusieurs soleils et plusieurs lunes.

mise à jour du 12/2025

 

OMesh_gltf : le bug sur les accessoires (épée d'un guerrier par exemple), constitué de plusieurs materials, a été corrigé (fonction init_attach_axis).

 

mise à jour du 11/2025

OLevelBox reçoit une fonction setEnabled(), ce qui bloque (true) les actions sur ce control.

 

OSkyEarth remplace OSkyAstro. Plus simple, plus facile à utiliser (il ne nécessite que d'indiquer l'heure !), pour un ciel satisfaisant et peu coûteux en calculs.

 

OMesh_gltf : la fonction permettant de remettre en pose neutre après une animation a été finalisée (elle s'appelle donc m_pose_neutral et non m_anim_neutral). Il est désormais possible de faire de la fin d'une animation, la pose neutre.

 

bottom of page