IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Problème texture SDL


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut Problème texture SDL
    Bonjour,

    Malgré toutes mes tentatives et les différents formats de fichiers utilisés j'arrive toujours pas à voir ma texture appliqué sur mon petit cube, j'espère que vous allez pouvoir m'aider

    Initialisions:

    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <GL/gl.h>
    #include <GL/glu.h>

    void Dessiner();

    double angleY = 0;
    double angleX = 0;
    GLuint texture;
    SDL_Surface *image;
    Main:
    int main(int argc, char *argv[])
    {
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);
    atexit(SDL_Quit);
    SDL_WM_SetCaption("Mon premier programme OPENGL SDL", NULL);
    SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);

    image=SDL_LoadBMP("cube.bmp");
    glGenTextures(1,&texture);

    glTexImage2D(GL_TEXTURE_2D,0,3, image->w,image->h,0,GL_RGB, GL_UNSIGNED_BYTE,image->pixels);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective(70,(double)640/480,1,1000);

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_TEXTURE_2D);

    Dessiner();

    Uint32 last_time = SDL_GetTicks();
    Uint32 current_time,ellapsed_time;
    Uint32 start_time;

    for (;
    {
    start_time = SDL_GetTicks();
    while (SDL_PollEvent(&event))
    {

    switch(event.type)
    {
    case SDL_QUIT:
    exit(0);
    break;
    }
    }

    current_time = SDL_GetTicks();
    ellapsed_time = current_time - last_time;
    last_time = current_time;

    angleY += 0.05 * ellapsed_time;
    angleX += 0.05 * ellapsed_time;

    Dessiner();

    ellapsed_time = SDL_GetTicks() - start_time;
    if (ellapsed_time < 10)
    {
    SDL_Delay(10 - ellapsed_time);
    }

    }

    return 0;
    }
    Et enfin la fonction qui dessine:

    void Dessiner()
    {
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glBindTexture(GL_TEXTURE_2D,texture);

    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity( );

    gluLookAt(0,0,5,0,0,0,0,1,0);

    glRotated(angleY,0,0,1);
    glRotated(angleX,1,0,0);

    glBegin(GL_QUADS);

    glColor3ub(255,0,0); //face rouge
    glTexCoord2f(0,0);glVertex3d(-1,-1,-1);
    glTexCoord2f(1,0);glVertex3d(1,-1,-1);
    glTexCoord2f(1,1);glVertex3d(1,1,-1);
    glTexCoord2f(0,1);glVertex3d(-1,1,-1);

    glColor3ub(0,255,0); //face verte
    glVertex3d(1,1,-1);
    glVertex3d(1,-1,-1);
    glVertex3d(1,-1,1);
    glVertex3d(1,1,1);

    glColor3ub(0,0,255); //face bleue
    glVertex3d(-1,-1,1);
    glVertex3d(1,-1,1);
    glVertex3d(1,1,1);
    glVertex3d(-1,1,1);

    glColor3ub(255,255,0); //face jaune
    glVertex3d(-1,1,1);
    glVertex3d(-1,-1,1);
    glVertex3d(-1,-1,-1);
    glVertex3d(-1,1,-1);

    glColor3ub(0,255,255); //face cyan
    glVertex3d(-1,1,-1);
    glVertex3d(1,1,-1);
    glVertex3d(1,1,1);
    glVertex3d(-1,1,1);

    glColor3ub(255,0,255); //face magenta
    glVertex3d(1,-1,-1);
    glVertex3d(-1,-1,-1);
    glVertex3d(-1,-1,1);
    glVertex3d(1,-1,1);

    glEnd();

    glFlush();
    SDL_GL_SwapBuffers();
    }
    La programme tourne très bien, mais malheureusement pas de texture sur la face route.

    Merci

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    il faut faire un glBindTexture entre le glGenTexture et le glTexImage2D.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut Merci
    C'est super, ca marche!! Merci, une erreur que j'aurai eu du mal a trouvé... enfin peut être que j'y serai arrivé, si j'avais raisonné logiquement.

    Je passe aux lumières et aux ombres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XNA] Problème textures objet DirectX
    Par Gurdil dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 25/05/2007, 13h37
  2. Problème de SDL, clique souris
    Par K4trix dans le forum SDL
    Réponses: 6
    Dernier message: 12/07/2006, 10h58
  3. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  4. Texture SDL + OpenGL
    Par batman60 dans le forum OpenGL
    Réponses: 6
    Dernier message: 17/07/2005, 14h02
  5. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo