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 d'affichage d'une texture


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut Problème d'affichage d'une texture
    Bonjour,
    Alors voila, je voudrai tout simplement afficher une texture 2d préalablement chargé avec SDL_image. J'ai un bout de code mais tout ce que je vois c'est un carré blanc au lieu d'un carré texturé...

    Voici le prog :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    #include <SDL/SDL.h>
    #include <SDL/SDL_Image.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
     
     
    GLuint texture_name;
    SDL_Surface *texture;
    GLuint objet;
     
     
    void LoadTextures()
    {
     
        // ---- Création d'un objet de texture. ------------------------------------------------
        glGenTextures (1, & texture_name);
        glBindTexture (GL_TEXTURE_2D, texture_name);
        // Paramétrage de la texture.
        glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     
        texture = IMG_Load("Background.png");
     
        // Jonction entre OpenGL et SDL.
        glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0,
        GL_RGBA, GL_UNSIGNED_BYTE, texture-> pixels);
     
    }
     
    void DrawScreen()
    {
     
        glEnable (GL_TEXTURE_2D);
     
        glBindTexture (GL_TEXTURE_2D, texture_name);
     
        glBegin(GL_QUADS);
            glTexCoord2i (0, 0) ; glVertex2i(0,0);
            glTexCoord2i (1, 0) ; glVertex2i(0,600);
            glTexCoord2i (1, 1) ; glVertex2i(800,600);
            glTexCoord2i (0, 1) ; glVertex2i(800,0);
        glEnd();
     
        glDisable (GL_TEXTURE_2D);
     
        glFlush();
        SDL_GL_SwapBuffers();
     
     
    }
     
    int main(int argc, char *argv[])
    {
        SDL_Init(SDL_INIT_VIDEO);
        SDL_WM_SetCaption("Mon premier programme OpenGL !",NULL);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
        SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);
        gluOrtho2D(0, 800, 600, 0);
     
        bool continuer = true;
        SDL_Event event;
     
        LoadTextures();
     
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                continuer = false;
            }
     
            glClear(GL_COLOR_BUFFER_BIT);
     
            DrawScreen();
     
        }
     
     
     
        SDL_Quit();
     
        return 0;
    }

  2. #2
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Ouch ce vert fluo fait mal aux yeux ! J'édite et je rajoute les balises de code, pense y la prochaine fois merci

  3. #3
    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
    ca ne serait pas plutot glTexCoord2f et non pas glTexCoord2i ?
    * 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

  4. #4
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Pourquoi glTexCoord2f ? Il met que des entiers la dans les coordonnees de la texture (0 ou 1), ou quelque chose m'a échappé ?

  5. #5
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Est ce que tu as vérifié que ton SDL_Surface est bien différent de NULL ?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut
    J'ai ajouté la ligne ci-dessous après DrawScreen(), et le programme ne returne pas d'erreur.

    "if (texture==NULL){return 1;};"

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par BruceBoc
    Bonjour,
    Alors voila, je voudrai tout simplement afficher une texture 2d préalablement chargé avec SDL_image. J'ai un bout de code mais tout ce que je vois c'est un carré blanc au lieu d'un carré texturé...

    Voici le prog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        glBegin(GL_QUADS);
            glTexCoord2i (0, 0) ; glVertex2i(0,0);
            glTexCoord2i (1, 0) ; glVertex2i(0,600);
            glTexCoord2i (1, 1) ; glVertex2i(800,600);
            glTexCoord2i (0, 1) ; glVertex2i(800,0);
        glEnd();
    }
     
    }
    est-ce voulu que vous inversiez le x et le y de la texture par rapport au quadrilatère ?

    glTexCoord2i (0, 1) ; glVertex2i(0,600);
    et
    glTexCoord2i (1, 0) ; glVertex2i(800,0);

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut
    A vrai dire non, ce n'est pas voulu, juste une grosse erreur de débutant. Par contre cela ne résoud tout de même pas le problème qui persiste.

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par BruceBoc
    A vrai dire non, ce n'est pas voulu, juste une grosse erreur de débutant. Par contre cela ne résoud tout de même pas le problème qui persiste.
    autre problème :

    gluOrtho2D(0, 800, 600, 0);

    ->

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, 800, 0, 600);

  10. #10
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Exact, tu ne définies pas le viewport (glViewport) également, mais je l'ai pas relevé car tu as dis que tu vois ton carré blanc. Je vais essayer de chopper la lib SDL et essayer la sur ma machine.

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut
    Toujours pas de changement, par contre pour "gluOrtho2D(0, 800, 0, 600)" ou "gluOrtho2D(0, 800, 600, 0)" bah sa dépend juste du sens de commencement des axes.

  12. #12
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Oula je me choppe une vilaine violation d'accés en lecture à cette ligne :

    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture->pixels);

    J'arrive meme pas à éxécuter ton code Pourtant SDL Image arrive trés bien à ouvrir mon image PNG, y a un truc qui doit m'échapper la

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

Discussions similaires

  1. [C#] problème d'affichage d'une nouvelle Form
    Par michel_frederic dans le forum C#
    Réponses: 15
    Dernier message: 17/11/2005, 16h40
  2. Problème avec affichage d'une table modifiée
    Par auriolbeach dans le forum Access
    Réponses: 6
    Dernier message: 31/10/2005, 15h45
  3. [GD] Problème d'affichage d'une image avec gd2
    Par turini dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h59
  4. Problème d'affichage d'une chaîne à l'écran
    Par Bubonik software dans le forum C
    Réponses: 7
    Dernier message: 08/05/2004, 20h47
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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