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 :

texture et puissance de deux..encore


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut texture et puissance de deux..encore
    Bonjour tout le monde,

    J'ai un soucis de texture et de puissance de deux. Il y a beaucoup de choses sur le forum mais je n'ai pas trouvé la réponse à ma question. J'ai une image que je redimenssionne pour pouvoir l'afficher sur un cylindre.
    Le problème, c'est que si je la redimenssionne en 512*1024 ca marche mais en 16*1024, ca ne marche pas. 16 est bien une puissance de deux et 512 aussi? Avec 16*1024, mon cylindre est blanc.
    Mon image en 512*1024 et beaucoup trop déformé pour mon application donc j'en voudrais une plus petite.
    Y a t il une impossibilité de faire 16*104?????

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Selon les spec OpenGL, la taille minimum doit être de 64x64, et les dimensions des puissances de 2.

    Si t'as besoin d'une texture plus petite, tu peux "découper" la partie de ta texture à appliquer en jouant avec les glTexCoord.

    Les modèles 3D par exemple n'ont souvent qu'une seule texture(selon la complexité) qui est découpée pour être mappée sur les différents polygones.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    j'ai déjà pensé au glTexCoord mais il faut aussi découper en puissance de deux non?
    On a toujours une texture meme avec le glTexCoord?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    Je me suis mal exprimée. C'est déjà ce que je fais. Mon, cylindre est découpé en 50 rectangles. Je dois donc decouper mon image(1024*512) en 50 "bandes" pour les plaquer ensuite sur chaques rectangles. La taille qui allait bien est 16*1024 car je voulais garder une puissance de deux.
    On peut faire avec une non puissance de deux(10*1024 par exemple)?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Citation Envoyé par mm2405
    On peut faire avec une non puissance de deux(10*1024 par exemple)?
    Tu peux faire une texture de 64x1024, dans laquelle ton image n'occupe qu'une partie de 10x1024(et le reste tout blanc ou noir ou peu importe ). Ensuite avec glTexCoord tu choisis la partie de la texture que tu veux mapper.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    Bon, ca ne marche pas. Je ne comprends pas ce que je fais de travers.
    Voila mon code :

    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
     
    void MFCopenGL::init(void)
    {
       int j;
       glClearColor(0, 0, 0, 1);
       glColor3d(0, 0, 0);
       for(j=0; j<=DIV_CERCLES; j++)
       {
            tcos[j] = cos(2*j*PI/DIV_CERCLES);
            tsin[j] = sin(2*j*PI/DIV_CERCLES);
       }
    }
     
    void MFCopenGL::cylindre()
    {
       int i;
       float z = 0;
       static float t=0;   // un compteur de temps
     
       glColor4d(1, 1, 1, 1);
       glBegin(GL_QUADS);
       for(i=0; i<NB_CERCLES; i++)
       {
            int j;
    	    for(j=0; j<DIV_CERCLES; j++)
            {
    	       	glEnable(GL_TEXTURE_2D);
    			glBindTexture(GL_TEXTURE_2D, text[j]);
     
    			glTexCoord2d(0, 0); glVertex3d(tcos[j], tsin[j], z);
                glTexCoord2d(0, 10); glVertex3d(tcos[j], tsin[j], z-ESPACE_CERCLES);
                glTexCoord2d(1024, 10); glVertex3d(tcos[j+1], tsin[j+1], z-ESPACE_CERCLES);
                glTexCoord2d(1024, 0); glVertex3d(tcos[j+1], tsin[j+1], z);
     
    			glDisable(GL_TEXTURE_2D);  
            }
    		z -= ESPACE_CERCLES;
       }
     
       glEnd();
     
     
     
    }
    mon tableau text[] contient les textures de taille 64*1024 avec seulement une bande de10*1024 avec une réelle image.(j'ai verifié, ca c'est bon)
    Les variables :
    DIV_CERCLES : nombre de rectangles composant mon cercle(=50 dans mon cas).
    NB_CERCLES : nombre de cercle (=1 dans mon cas)
    ESPACE_CERCLE : hauteur du cylindre(=1 aussi)
    C'est un code que j'ai récupéré et adapté. Normalement, il est présenté pour être utiliser avec une seule texture répétée sur chaque rectangle. Moi, j'ai voulu changer de texture sur chaque rectangles.
    Si quelqu'un voir mon erreur, je suis preneuse.....
    J'ai un cylindre tout blanc qui se dessine et si j'enlève la ligne : glColor4d(1, 1, 1, 1);c'est tout noir.
    Merci d'avance

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Citation Envoyé par mm2405
    j'ai déjà pensé au glTexCoord mais il faut aussi découper en puissance de deux non?
    Non les dimensions de ta texture vont de 0.0f à 1.0f, et tu peux choisir par exemple la partie qui va de 0.2f à 0.4f sur x et de 0.1f à 0.7f sur y.

    Mais n'oublie pas la faq:
    http://jeux.developpez.com/faq/openg...S_meta_texture

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/03/2010, 21h35
  2. Somme de puissances de deux
    Par knowl dans le forum C#
    Réponses: 5
    Dernier message: 21/01/2008, 00h38
  3. [DX9] Textures non puissance de 2
    Par mister3957 dans le forum DirectX
    Réponses: 4
    Dernier message: 08/01/2008, 20h32
  4. Puissance de deux supérieure
    Par NiamorH dans le forum C
    Réponses: 30
    Dernier message: 02/04/2007, 10h29
  5. Réponses: 2
    Dernier message: 05/07/2006, 12h09

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