Accueil > > > Envi3D/OpenGLWidget.h
BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR UN TRÈS PROCHAIN JEU 3D
Envi3D/OpenGLWidget.h
Informations sur ce code source
Bonjour à tous,
Voici un moteur 3D gérant les textures tous formats (supporté par QT) et contient un loader de fichier .obj que j'ai écrit personnellement.
Il permet d'illustrer l'utilisation de deux QGLWidget en même temps et comment se servir de
Fichier : Envi3D/OpenGLWidget.h
Nombre de lignes : 86 lignes
Afficher ce fichier en plein écran
- /*
- Auteur : Xcxl
- Date : lun. aout 4 2008
- Role : Gere les QGLWidget
- C'est ici que se passe l'affichage de l'environnement. Il y a d'abord initializeGL et resizeGL à la fin
- du constructeur, puis le MainWindows appelle les updateGL() de ces QGLwidget ici présents.
- Ils recoivent le tableau de pointeur vers chaque objet et il n'y a plus qu'à appeler pour
- chacun AfficherObjet() puis placer les lumières!
- */
- #ifndef DEF_NOUVEL_ECRAN
- #define DEF_NOUVEL_ECRAN
- #include <GL/gl.h>
- #include <GL/glu.h>
- #include <cmath>
- #include <vector>
- #include <QtOpenGL/QGLWidget>
- #include <QImage>
- #include <QTextStream>
- #include <QMessageBox>
- #include <QDebug>
- #include <QString>
- #include "Objets.h"
- #include "Personnage.h"
- #include "Coord3D.h"
- #include <QKeyEvent>
- using std::vector;
- class OpenGLWidget : public QGLWidget
- {
- //Q_OBJECT
- public:
- OpenGLWidget ( QWidget *parent, int largeur, int hauteur, Personnage *joueur, Coord3D positionCamera, Coord3D targetCamera, int taillSolX, int tailleSolY, Objet *listeObjet[], int nombreObjets, int typeCamera, QString nomDeClasse = "" );
- void setVueIsActive(bool active); //si on desactive la minicarte avec le menu
- private:
- void initializeGL(); //initialisation des paramtres opengl, du fog, des textures,...
- void resizeGL ( int width, int height ); //est appele quand on cree le widget
- void paintGL(); //appelle apres lors des updateGL (quand on veut rafraichir)
- GLuint loadTexture ( QString filename, bool useMipMap); //chargement des textures
- static void dessinerRepere();
- void ConversionVecteursVersAngles();
-
- bool _vueActive;
- int _typeDeCamera;
- Coord3D _positionCamera;
- Coord3D _cibleCamera;
- float _theta;
- float _phi;
- Personnage *p_joueur;
- Coord3D _positionJoueur; //variables temporaires de calcul, utilisé seulement pour calculer la cible visé par la camera (fonction ConversionVecteursVersAngles()...)
- Coord3D _targetJoueur;
- int _tailleSolX;
- int _tailleSolY;
- Objet *p_listeObjets[50]; //pointeur vers chaques objets
- int _nombreObjets; //information transmise par mainwindow
- Coord3D _positionObjet; //information que l'on va recuperer a laide du pointeur sur chaque objet
- Coord3D _orientationObjet;
- vector< vector< vector< float > > > *p_tableauVectrices;
- int _nombreDeTextures;
- GLuint texturesGun1, texturesGun2,textureSol, textureJoueur,textureVueInactive;
- QString _nomDeClasse;
- int a; //angle de rotation de la sphere de lumière
- };
- #endif
|