Mes programmes OpenSource

Pour une offre professionnelle, consultez mon site http://www.execute.re.


OpenGL - Projets OpenGL

Intro InsideGL SpotLight DCal3D DCal3D VCL 3DStudio 3DObject ProgMesh Lightmaps gluTess Picking shuttle Anim8or Flock3D

InsideGL

Mes composants OpenGL :
TWinGLla fenêtre OpenGL sur laquelle tout se dessine
TGLLightun composant non visuel pour gérer les GL_LIGHTi
TGLTexUn composant non visuel pour créer une texture;
ma première approche des textures
TGLImageDescendant de TImage, il affiche sa "Picture" via OpenGL s'il est placé sur un TWinGL;
c'est ma deuxième approche des textures
TZIPTextureNouvelle approche des textures, le composant s'appuie sur mon composant TZIPFile afin de lire un fichier texture au format TEX (voir ci-dessous)
TZIPFileBien qu'il ne soit pas directement lié à OpenGL j'ai inclut ce composant dans MySoftGL car TZIPTexture s'appuie dessus.
L'idée de ce composant est de permettre de placer un fichier ZIP dans un composant Delphi (au même titre que l'on place un bitmap dans un TImage).
Notez que ce composant ne supporte que deux méthodes : stored et deflated, et il conserve en interne uniquement les données compressées sans l'entête ZIP.

C'est composants sont en cours d'étude, si vous avez des idées ou des remarques sur leur utilisation, n'hésitez pas à me contacter.
La seule ligne de conduite que je me suis tracée sur ces composants c'est qu'ils doivent en même temps faciliter l'usage de OpenGL sans restreindre l'accès à son API...par exemple TWinGL.OnPaint prépare OpenGL au rendu (glClearBuffer, glLoadIdentity...) mais dans l'évènement, on peut utiliser l'API OpenGL pour effectuer le rendu (glBegin, glVertex, glEnd).

Téléchargez ici les sources pour Delphi 5 et 6 de InsideGL (lisez install.txt pour les détails de l'installation).

Le format TEX:
OpenGL s'appuie en standard sur un format d'image inadapté à Windows (ou l'inverse), un Bitmap Windows est codé en RGB, sous OpenGL c'est du BGR (l'ordre des composants Rouge, Vert et Bleu est inversé). J'ai donc inventé un format de fichier adapté à OpenGL, le format TEX contient tout simplement :

 TEX_File=packed record
  Sign  : word; // $DD3D pour Dongeon & Dragon 3D
  Depth : word; // 3 pour une image 24 bits, 4 pour une image 32 bits
  Width : integer; // la largeur de l'image QUI DOIT ETRE UNE PUISSANCE DE 2 !
  Height: integer; // la hauteur de l'image QUI DOIT ETRE UNE PUISSANCE DE 2 !
  Pixels: array[1..Width*Height,1..Depth] of byte; // l'image elle-même
 end;
Le $DD3D vient de ce que ces composants sont essentiellement développez dans le cadre d'un moteur 3D pour le jeu de rôle en ligne (projet abandonné).
Ce format n'étant absoluement pas compressé, j'ai développé le composant TZIPFile pour extraire les fichiers TEX d'un fichier ZIP.

BMP2TEX permet de convertir une image (supportée par TImage : bmp, jpg...) au format TEX; notez que l'unité TEX.PAS offre le support des fichiers TEX à TImage.

Note: vous trouverez dans MySoftGL également une série d'unité d'importation de différents formats graphique (LoadXXX.PAS) utilisés dans 3DObject, si vous pouvez m'aider sur les CR2 (pour les patchs) et 3DS (sur le Keyframer) j'en serais ravis :)