home *** CD-ROM | disk | FTP | other *** search
- Tiny_gl.ldg quesako Belfort le 15/08/2000
-
- Version actuelle de tiny_gl.ldg = 0.41
-
-
- TinyGL est une librairie graphique 3D minimaliste de Patrice BELLARD
- développée dans le cadre d'un projet étudiant de réalité virtuelle
- nommé Vreng, TinyGL étant le moteur de rendu 3D du projet. Les fonctions
- de base sont identiques à la célèbre librairie OpenGL de SGI, dont le
- clone le plus célèbre est Mesa (déja porté par mes soins).
- Contrairement à Mesa, TinyGL ne se veut pas compatible OpenGL, les
- fonctions accessibles sont assez restreintes et n'ont été implémentées
- que celles nécessaires au projet de réalité virtuel. Pour ma part je
- tacherais de rajouter quelques fonctions pratiques et très usitées comme
- "glOrtho()"... qui peuvent facilement être implémentées. Enfin TinyGL a
- surtout été optimisée pour le plaquage de textures.
-
- La librairie LDG que vous avez entre les mains
-
- Cette librairie a donc repris les sources originales de TinyGL 0.2 et
- ont été adaptées au besoin de notre monde et dans le but de le rendre
- dans la mesure du possible la plus compatible avec la librairie Mesa_gl.ldg
- précitée et avec les fonctions d'affichage TrueColor de screen.ldg.
- Pour se faire les fonctions GLX liées à X1Windows ont été remplacées pour
- créer un contexte compatible avec celui crée dans Mesa_gl.ldg. Contrairement
- à celui ci un seul mode graphique a été retenu: le mode 24bits RGB au format
- VDI. Le rendu de base de TinyGL s'effectuant en 16bits et la transformation
- de 16 vers 24bits étant très lente, le driver à été adapté afin de directement
- réaliser le dessin dans le buffer 24bits. Une forte optimisation du code a été
- nécessaire afin de ne pas être pénalisé et obtenir une vitesse identique
- ou presque (voir plus rapide!) par rapport au rendu 16bits d'origine, c'est
- chose fait pour le rendu de gouraud (smooth) et le rendu flat. Le rendu se
- révèle globalement nettement plus rapide que celui de Mesa_gl.ldg si l'on
- n'utilise pas l'accélération GL_CULLFACE qui permet de ne pas dessiner le
- dos des objets si ceux la sont cachés par d'autres. Cette accelération
- n'existe pas dans TinyGL.
-
- version originale : 0.10
- Ce qui ne va pas encore dans cette version
-
- Le rendu des textures n'est actuellement pas valide car la transformation
- du rendu 24 bits n'est pas faite ou incomplete, donc pas la peine d'essayer
- de lui faire faire des textures! seul le rendu Flat ou Gouraud fonctionne.
- La fonction glDeleteLists() est accesible dans les fonctions mais ne fait
- absolument rien! je l'ai intégrée uniquement pour test de remplacement de
- mesa_gl.ldg par Tiny_gl.ldg dans Eureka 2.12 de Francois Le Coat avec succes.
- Tiny_gl peut donc dans une certaine mesure remplacer Mesa_gl pour des rendus
- simples.
-
- WARNING: La largeur de l'image doit être un multiple de 4!!!!! sinon
- oups!
-
- Save_TGA() ne fonctionne pas, elle sera retirée dans une prochaine
- version, elle fait double emploi avec la meme fonction de screen.ldg
-
- version : 0.11 (1 mars 2000)
- Recompilation de la version précédente avec nouvelle librairie LDG
- pour corriger un bug de gestion mémoire.
- Save_TGA() a été éliminée des fonctions de Tiny (vous pouvez utiliser celle
- de screen qui fonctionne parfaitement)
- Les textures ne fonctionnent toujours pas normalement
-
- version : 0.20 (3 avril 2000)
- Correction du rendu filaire
- Correction du rendu des textures
-
- version : 0.30 (4 avril 2000)
- Nouvelle correction pour les textures
- Gestionnaire de mémoire (grabage collecting) intégré pour assurer l'éffacement
- des blocs à la fin de la session
-
- version : 0.31 (9 avril 2000)
- Accélération légère de la librairie (environ 5 à 10%)
-
- version : 0.32 (15 avril 2000)
- Correction de la fonction de désallocation qui ne désallouait rien!
- erreur incroyable, faut que je dorme!
-
- version : 0.33 (24 avril 2000)
- Encore des problèmes de désallocations mémoire importants, sur les
- essais effectues plus riena signaler ouf, ca fait pas très sérieux tout cela.
-
- version : 0.34 (25 avril 2000)
- Une allocation inutile enlevée, réduction du fractionnement mémoire et du nombre
- de blocs alloués.
- swapbuffer() devrait fonctionner (attention vous devez allouer vous même le bloc
- 3 octets par pixel)
-
- version : 0.35 (18 juin 2000)
- Une routine d'exception est installable en cas d'erreur interne non
- prévisible
-
- version : 0.36 (29 juin 2000)
- Correction erreur GL_FRONT GL_BACK avec le placement des vertex sous
- GL_TRIANGLE_STRIP. Dorénavant avec cette version on peut utilise les
- options liéees à GL_BACK et GL_FRONT elles peuvent être enfin différentes
- de plus l'option GL_CULLFACE est maintenant utilisable.
- Interpolation des couleurs sur les lignes pour le mode filaire.
-
- version : 0.37
- Interpolation des couleurs en mode filaire et amélioration d'environ
- 20% de la vitesse.
- Toutes les erreurs internes de Tiny sont gérées par l'exception
-
- version : 0.38
- Contrairement à ce que j'ai pu écrire pour la version 0.37 toutes les
- erreurs n'étaient pas gérées par l'exception, c'est chose faite, de plus
- 2 nouveaux types d'erreurs apparaissent et une erreur mémoire ne signifie
- plus systématiquement un arrêt brutal du programme si l'erreur 13 est
- présentée. Tout le monde peut se tromper! moi le premier. Warning sur niveau
- de mémoire basse (< 32Ko)
-
- version 0.41
- Gain en mode filaire d'environ 10% !
- Gain en utilisation intensive des couleurs et utilisation en liste 10-15% !
- Gain sur 3D sans perspective environ 10%
-
- Intérêt de Tiny_gl:
-
- Tiny_gl est tout petit et fait environ 140Ko (compilé avec GCC qui prend pour
- n'importe quelle application environ 40Ko) et comparé à Mesa_gl.ldg qui est
- proche de 800Ko (les 2 en version 68000) on comprend la différence. Mais
- bien plus fort en mémoire prise en utilisation le gain peut atteindre de
- l'ordre de 5Mo!!!!
- Enfin TinyGL est petit, le source est bien plus simple à suivre et plus aisé à
- optimiser (Est ce possible avec Mesa! je m'y suis casse le nez), si des fous
- d'assembleur veulent s'y frotter, je leurs laisserais bien volontier les
- sources.
-
- Fonctions ajoutées à TinyGL:
- gluLookAt()
- glOrtho()
-
-
- Olivier LANDEMARRE
-
-