Bonjour,
voilà la classe OpenGL de l'exemple de Windev remaniée par mes soins.
J'ai essayé de mettre un maximum de constantes OpenGL mais il en manque surement. Je me suis basé sur cette source : http://www.khronos.org/registry/glsc/api/1.0/gl.h.
Pour l'instant elle ne fait pas grand chose, cela permet juste d'initialiser un champ OpenGL, mais au moins cela minimise le code dans la fenêtre.
Attention je n'utilise pas la nomenclature des types de variables de Windev.
Code de la fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Déclarations Globales : // ici on choisit le champ à initialiser, un champ image ou une fenêtre. Champ_OpengL_1 est une Classe_OpenGL(Image1..Nom) Initialisation : Champ_OpengL_1:InitPFD() Champ_OpengL_1:InitChamp() Champ_OpengL_1:InitGLScene() Champ_OpengL_1:InitGLParam() // c'est cette fameuse fonction qui permet de redessiner le champ. J'ai fixé à 25 ms pour éviter d'avoir un gros scintillement quand on redimensionne la fenêtre si le champ est ancré et cela permet de rafraichir le champ assez rapidement sans que l'on attende trop longtemps. Bien sur pour un champ qui ne sera pas redimensionné de manière manuelle (en étirant les bords ou coin de la fenêtre) vous pouvez mettre cette valeur à 0. TimerSys("Redessine", 25, 1) PROCEDURE Redessine() Champ_OpengL_1:Efface_et_SwapBuffers()
Classe OpenGL V0.1
- permet l'initialisation d'un champ image ou fenêtre
- 2 paramètres optionnels pour la méthode InitPFD
V0.2
- ajout des méthodes : glBegin, glEnd, glTranslatef, glVertex3f, glColor3f, glRotatef, glLoadIdentity
V0.3
- ajout des textures pour les cubes. Il est possible de charger plusieurs textures (à définir dans la variable globale nb_textures). Dans l'exemple il y en a 2. Les textures sont pour l'instant limitées à des fichiers BMP de 64*64, 128*128 et 256*256 pixels en 24 bits. Les fichiers BMP sont à placer dans le sous-répertoire "EXE" du projet.
V0.4
- modification de la méthode InitTexture : possibilité de paramétrer les textures et les mipmaps
- ajout des méthodes InitLumiereAmbient et InitLumiereDiffuse
- ajout de la méthode glNormal3f
- ajout des méthodes gluCylindre et gluSphere
V0.4a
- modification de la méthode InitLumiereDiffuse
V0.5
- ajout des méthodes glColor4f, glColor3ub, glColor4ub
- ajout d'un paramètre optionnel à InitTexture pour le nombre de textures max (initialisé à 1)
Cette classe est très largement inspirée de la traduction du tuto de Nehe disponible ici : http://nehe.developpez.com/
Je vous mets aussi mes projets qui suivent le tuto pour vous permettre de comprendre les étapes.
TODO :
- ajouter les évènements Windows (clavier et souris surtout)
- continuer d'intégrer des méthodes
- ajouter d'autres classes pour chaque forme puis faire une classe pour créer un groupe de formes
Partager