ash08 | Salut tout le monde,
j'ai un probleme pour charger des textures en opengl.
Je suis novice donc je me suis inspire du tuto de nehe sur les textures et de cet article qui defini les specifications pour Qt.
Mais impossible a l'affichage j'obtient juste un carre bleu...
Code :
- /**
- *
- * Retracer la fenetre graphique. est appele a chaque modification de scene
- *
- */
- void Graphique::paintGL()
- {
- // Vider la fenetre graphique
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- // Faire une mise a l'echelle pour la demo...
- glLoadIdentity();
- // On ne tient pas compte du temps encore...
- static double dt = 0.0 ;
- pScene->animer(dt);
- pScene->afficher(dt);
- }
|
Code :
- /**
- *
- * Initialisation de contexte OpenGL
- *
- */
- void Graphique::initializeGL()
- {
- glClearColor( 0.0, 0.0, 0.0, 0.0 );
- glShadeModel( GL_SMOOTH );
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_DEPTH);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_COLOR_MATERIAL);
- glDepthFunc(GL_LEQUAL);
- }
|
La classe decor qui est pour l'instant juste un cube sur lequel on met une texture
Code :
- #include "decor.h"
- /*
- * Constructeur
- *
- */
- decor::decor()
- {
- loadGLTextures();
- }
- /*
- * Destructeur
- *
- */
- decor::~decor()
- {}
- /*
- * chargement de la texture
- *
- */
- void decor::loadGLTextures(void)
- {
- QImage t;
- QImage b;
-
- if ( !b.load( "./data/NeHe.bmp" ) )
- {
- b = QImage( 16, 16, 32 );
- b.fill( Qt::red.rgb() );
- }
- t = QGLWidget::convertToGLFormat( b );
- glGenTextures( 1, &texture[0] );
- glBindTexture( GL_TEXTURE_2D, texture[0] );
- glTexImage2D( GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGB, GL_UNSIGNED_BYTE, t.bits() );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
- }
- /*
- * Afficher: Methode contenant les appels OpenGL pour dessiner l'objet
- *
- */
- void decor::afficher() const
- {
- // Sauvegarde la matrice courante
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(1.0f,0.0f,0.0f); // Red
- glVertex3f( 1.5f, 0.0f, 0.0f); // Top Of Triangle (Front)
- glVertex3f( 0.0f, 0.0f, 0.0f); // Top Of Triangle (Front)
- glEnd();
- glBegin(GL_LINES);
- glColor3f(0.0f,1.0f,0.0f); // Red
- glVertex3f( 0.0f, 0.0f, 0.0f); // Top Of Triangle (Front)
- glVertex3f( 0.0f, 1.5f, 0.0f); // Top Of Triangle (Front)
- glEnd();
- glBegin(GL_LINES);
- glColor3f(0.0f,0.0f,1.0f); // Red
- glVertex3f( 0.0f, 0.0f, 0.0f); // Top Of Triangle (Front)
- glVertex3f( 0.0f, 0.0f, 1.5f); // Top Of Triangle (Front)
- glEnd();
- glBindTexture(GL_TEXTURE_2D, texture[0]);
- glBegin(GL_QUADS);
- // Front Face
- glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
- // Back Face
- glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- // Top Face
- glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
- // Bottom Face
- glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- // Right face
- glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- // Left Face
- glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
- glEnd();
- // Revient a la matrice initiale
- glPopMatrix();
- }
- /*
- * Afficher: Methode pour animer l'objet
- *
- * @param dt Temps pour l'animation
- *
- */
- void decor::animer(double dt)
- {
- }
|
J'ai teste et b.load( "./data/NeHe.bmp" ) retourne bien true
voila je sais pas du tout ce que j'aurai pu oublier
quelqu'un a une idee? |