Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Jeux vidéo de type bac à sable
20 juin 2011

Tutoriel: Introduction à OpenGL sur QT

Pour developper mon moteur 3D sur mon mmo j'aurai besoin de faire de l'openGL (enfin on verra quand j'en aurai fini avec l'apprentissage de celui ci).

J'ai donc commencer à ressembler quelques tutoriaux et voulu compiler tout ça en qt: pas facile aussi ai je décidé de vous donner la marche à suivre.

Pour commencer il vous faut qt et un projet vide (voir le site du zero pour ça).

Ensuite c'est assez facile.

1- Dans le fichier.pro il faut rajouter la ligne: QT+=opengl

 

2- Créez un fchier main.cpp avec le code suivant:

#include

#include
#include"GLWidget.h"
 
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
GLWidgetwindow;
window.resize(800,600);
window.show();
 
 
returnapp.exec();
}
 

3- Ajouter la classe GLWidget puis dans le .h:

#ifndefGLWIDGET_H

#defineGLWIDGET_H
 
#include
 
 
classGLWidget:publicQGLWidget{
 
Q_OBJECT//mustincludethisifyouuseQtsignals/slots
 
public:
GLWidget(QWidget*parent=NULL);
 
protected:
voidinitializeGL();
voidresizeGL(intw,inth);
voidpaintGL();
voidmousePressEvent(QMouseEvent*event);
voidmouseMoveEvent(QMouseEvent*event);
voidkeyPressEvent(QKeyEvent*event);
};
 
#endif//GLWIDGET_H
 

4- Puis le code source glwidet.cpp

#include

#include"glwidget.h"
#include"stdio.h"
GLWidget::GLWidget(QWidget*parent):QGLWidget(parent){
setMouseTracking(true);
}
 
voidGLWidget::initializeGL(){
glShadeModel(GL_SMOOTH);
glClearColor(0.0f,0.0f,0.0f,0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
 
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0,0,0,0);
}
 
voidGLWidget::resizeGL(intw,inth){
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)w/(GLfloat)h,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
 
voidGLWidget::paintGL(){
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
}
 
voidGLWidget::mousePressEvent(QMouseEvent*event){
 
}
voidGLWidget::mouseMoveEvent(QMouseEvent*event){
printf("%d,%d\n",event->x(),event->y());
}
 
voidGLWidget::keyPressEvent(QKeyEvent*event){
switch(event->key()){
caseQt::Key_Escape:
close();
break;
default:
event->ignore();
break;
}
}
 

5- Compilez et lancez

Vous aurez une belle fenêtre noire :-) Voila votre premier programme.

tuto1

Pour la suite vous pouvez regarder:

sur digitalfanatics.org la traduction française et l'adaptation qt des tutoriaux de NeHe

 Je vous donnerai bientôt d'autres liens de tutoriaux.

Publicité
Publicité
Commentaires
Jeux vidéo de type bac à sable
Publicité
Publicité