Bonjour, j'aurais besoin de votre aide pour un petit problème. J'ai créer une class Scene, qui s'occupe juste de dessiner la scene (pour ne pas encombrer le main), voici son prototype:
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
#ifndef DEF_DRAW
#define DEF_DRAW
 
    class Scene
    {
        public:
            Scene();
            ~Scene();
            void drawAll();
 
        private:
            GLuint m_textureSol;
    };
 
#endif
Et le .cpp qui va avec:
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
25
26
27
28
29
30
31
32
33
34
35
36
#include <SDL/SDL.h>
#include <SDL_image.h>
#include <GL/gl.h>
#include <GL/glu.h>
 
#include "constantes.h"
#include "sdlglutils.h"
#include "Scene.h"
 
Scene::Scene()
{
    m_textureSol = loadTexture("textures/metal091.JPG");
}
 
Scene::~Scene()
{
    glDeleteTextures(1, &m_textureSol);
}
 
void Scene::drawAll()
{
    glBindTexture(GL_TEXTURE_2D, m_textureSol);
 
    glBegin(GL_QUADS);
 
    glTexCoord2d(-10, -10);
    glVertex3d(-10, -10, 0);
    glTexCoord2d(-10, 10);
    glVertex3d(-10, 10, 0);
    glTexCoord2d(10, 10);
    glVertex3d(10, 10, 0);
    glTexCoord2d(10, -10);
    glVertex3d(10, -10, 0);
 
    glEnd();
}
Et mon main:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <SDL/SDL.h>
#include <SDL_image.h>
#include <GL/gl.h>
#include <GL/glu.h>
 
#include "constantes.h"
#include "Scene.h"
#include "event.h"
#include "sdlglutils.h"
 
int main ( int argc, char** argv )
{
    SDL_Surface *ecran = NULL;
    Input in;
    Scene scene;
    double camX = 3, camY = 3, camZ = 1;
    double cibleX = 0, cibleY = 0, cibleZ = 0;
 
    memset(&in, 0, sizeof(in));
 
    SDL_Init(SDL_INIT_VIDEO);
    ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_OPENGL);
 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(70, (double)LARGEUR_FENETRE / HAUTEUR_FENETRE, 1, 1000);
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_DEPTH_TEST);
 
    while(!(in.quit) && !(in.key[SDLK_ESCAPE]))
    {
        updateEvent(&in);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
 
        gluLookAt(camX, camY, camZ, cibleX, cibleY, cibleZ, 0, 0, 1);
 
        scene.drawAll();
 
        glFlush();
        SDL_GL_SwapBuffers();
    }
 
    return 0;
}
La fonction "loadTexture()" charge une texture OpenGL a partir d'une SDL_Surface.
Le problème est que lorsque je charge la texture dans le constructeur de la classe, la texture n'apparait pas dans ma scene(ici je n'ai fais que le sol pour tester), par contre si je la charge dans la fonction "drawAll()", cela marche.
Mais si je fais comme sa je dois charger puis détruire mes textures a chaque appelle de la fonction donc c'est pas super.

J'aimerais donc savoir si c'est bien possible de charger une texture dans le constructeur, et si oui quel est mon erreur.

Merci beaucoup si vous pouvez m'aider .