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 :

Redimensionner Texture OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut Redimensionner Texture OpenGL
    Bonjour j'ai un problème au niveau de du format de mes textures.

    Je n'arrive pas à jongler entre les paramétrages et les coordonnées à attribuer.

    Nom : RRTexture.jpg
Affichages : 401
Taille : 72,1 Ko
    Mon image correspond à celle ci.

    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
     
    void identifiantTexture(){
     
    	glGenTextures(NB_TEXTURE, &idTexture[0]);
        int i;
    	for (i=0;i<NB_TEXTURE;i++)
    	{
    		glBindTexture(GL_TEXTURE_2D,idTexture[i]); // Transfert texture en cache
            glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST);
     
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
            printf("taille image : %d x %d\n", width[i], height[i]);
            glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, width[i], height[i], 0, GL_RGB, GL_UNSIGNED_BYTE, Texture[i]);
     
    		free (Texture[i]);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        glBindTexture(GL_TEXTURE_2D,idTexture [1]);
        glBegin(GL_QUADS);
        glNormal3f(0.0f, 0.0f, -1.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(0.5, 0.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(0.5, 0.5); glVertex3f(1.0, 1.0, 0.0);
        glTexCoord2f(0.0, 0.5); glVertex3f(0.0, 1.0, 0.0);
        glEnd();
    Mon image se positionne extrêmement mal et j'observe uniquement une partie de celle-ci.

    Le résultat souhaité est l'image de base et non pas une partie de l'image.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut

  3. #3
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Par défaut
    C'est normal, vous n'utilisais que le quart inférieur gauche de votre image. Vous devrais remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(0.5, 0.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(0.5, 0.5); glVertex3f(1.0, 1.0, 0.0);
        glTexCoord2f(0.0, 0.5); glVertex3f(0.0, 1.0, 0.0);
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
    Ainsi tu auras ton image en entière sur la face. ( je suppose que c'est ce que vous voulez faire)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut
    Le résultat n'est pas meilleur avec 1.0

    La taille de la photo est de 450x450 pourtant


  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Salut!

    Je pense que tu ne saisis pas bien le concept des coordonnées de texture, sinon tu aurais trouvé ton erreur.
    Voici un tutoriel qui pourra t'aider: http://jeux.developpez.com/tutoriels...ation-texture/
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut
    Merci pour le lien, je pense pourtant avoir compris "l'essentiel'. Lorsque je mets à 1.0 je devrais être en présence de mon image complète, cependant ca n'est pas le cas. En mettant 0.5 je devrais obtenir la moitié de mon image mais sur les images ont aperçoit une distorsion.



    Voila un nouveau comportement que je n'arrive pas à expliquer ... J'ai beau regardé mon image est bien chargé.

    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
     
    void chargementTexture(){
        int i;
    	for (i=0; i< NB_TEXTURE; i++)
    	{
            sprintf (filename, "texture%c.ppm", '1' + i);
    		Texture[i] = glmReadPPM(filename, &width[i], &height[i]);
    	}
    }
     
    void identifiantTexture(){
     
    	glGenTextures(NB_TEXTURE, &idTexture[0]);
        int i;
    	for (i=0;i<NB_TEXTURE;i++)
    	{
    		glBindTexture(GL_TEXTURE_2D,idTexture[i]); // Transfert texture en cache
            glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
            glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
            glTexParameterf(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);
            printf("taille image : %d x %d\n", width[i], height[i]);
            glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, width[i], height[i], 0, GL_RGB, GL_UNSIGNED_BYTE, Texture[i]);
     
    		free (Texture[i]);
    	}
    }
    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
     
        // construction d'un cube
        // face
        glBindTexture(GL_TEXTURE_2D,idTexture[2]);
        glBegin(GL_QUADS);
        glNormal3f(0.0f, 0.0f, -1.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
        glEnd();
     
        // derriere
        glBindTexture(GL_TEXTURE_2D,idTexture[1]);
        glBegin(GL_QUADS);
        glNormal3f(0.0f, 0.0f, 2.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 1.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(1.0, 0.0, 1.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 1.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(0.0, 1.0, 1.0);
        glEnd();
     
        // gauche
        glBindTexture(GL_TEXTURE_2D,idTexture [1]);
        glBegin(GL_QUADS);
        glNormal3f(-1.0f, 0.0f, 0.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(0.0, 0.0, 1.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 1.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
        glEnd();
     
        // droite
        glBindTexture(GL_TEXTURE_2D,idTexture [2]);
        glBegin(GL_QUADS);
        glNormal3f(2.0f, 0.0f, 0.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(1.0, 0.0, 1.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 1.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
        glEnd();
     
        // haut
        glBindTexture(GL_TEXTURE_2D,idTexture [0]);
        glBegin(GL_QUADS);
        glNormal3f(0.0f, 2.0f, 0.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 1.0, 0.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(0.0, 1.0, 1.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 1.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
        glEnd();
     
        // bas
        glBindTexture(GL_TEXTURE_2D,idTexture [0]);
        glBegin(GL_QUADS);
        glNormal3f(0.0f, -1.0f, 0.0f);
        glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 1.0);
        glTexCoord2f(1.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
        glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 0.0, 0.0);
        glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 0.0, 1.0);
        glEnd();

    Pour l'image j'ai pensé à une translation qui aurait pu causer cela m'est pourtant en désactivant les quelques translations le problème demeure.

Discussions similaires

  1. perte texture opengl
    Par Duguesclin dans le forum OpenGL
    Réponses: 1
    Dernier message: 05/08/2006, 18h28
  2. [DevIL] Aide DevIL pour chargement texture Opengl
    Par CPPTryer dans le forum DevIL
    Réponses: 1
    Dernier message: 10/02/2006, 16h47
  3. texture opengl-sdl
    Par ffomnislash dans le forum OpenGL
    Réponses: 20
    Dernier message: 21/07/2005, 12h14
  4. application de texture opengl
    Par batman60 dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/06/2005, 17h08
  5. [ActiveX] Texturing OpenGL
    Par MaGaX dans le forum OpenGL
    Réponses: 10
    Dernier message: 17/03/2005, 18h06

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