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 de textures


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 136
    Par défaut Problème de textures
    Bonjour,

    Je veux texturer dans un jeu 2D pour des effets plus lissés. J'ai 2 types d'images différentes : celles contenues dans un fichier unique, et celles que j'utilise comme des tilesets, et les 2 posent problème mais différemment.

    J'utilise les paramètres suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP);
    Donc le problème des images "seules" qui utilisent en plus la transparence est qu'un espèce de halo blanc très laid apparait autour ou sur des bords de la texture.

    Le second problème est que les cases que je veux dessiner se mélangent avec celles d'à côté ce qui met des traits horizontaux à travers toute la fenêtre (et même d'ailleurs sans le lissage mais beaucoup moins).

    Comment empêcher ces 2 problèmes??

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    Salut,

    as-tu essayé les extensions GL_CLAMP_TO_BORDER et GL_CLAMP_TO_EDGE pour le wrapping ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP);
    tu auras besoin de glext.h si tu n'utilises pas encore les extensions

    et de même, tu définis le wrapping sur S mais pas sur T
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP);
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 136
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP);
    Cela ne fonctionne pas, ça me donne des effets graphiques divers et variés mais rien à voir avec le résultat voulu (certaines textures prennent une couleur unie, d'autres non, et les problèmes persistent).

    Je vais tenter les extensions.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Par défaut
    Salut,

    J'utilise les mipmaps pour charger les textures et je n'ai aucun pb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    glGenTextures(1, &this->handle);
        glBindTexture(GL_TEXTURE_2D, this->handle);
     
        gluBuild2DMipmaps(GL_TEXTURE_2D, 4, pSurface.getWidth(),pSurface.getHeight(),
    		GL_RGBA,GL_UNSIGNED_BYTE,pSurface->pixels);
     
    	// Filtre
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    le handle, c'est celui attribué par openGL
    pSurface, c'est l'image chargée (par SDL moi)
    getWidth() => largeur
    getHeight() => hauteur
    pixels => le tableau de pixels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 136
    Par défaut
    En fait il semblerait que ça cafouille au niveau de l'alpha blending...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glEnable(GL_ALPHA_TEST);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glAlphaFunc(GL_GREATER,0.0);

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. Problème de texture (ça rame !)
    Par Alex63 dans le forum OpenGL
    Réponses: 3
    Dernier message: 30/06/2006, 09h23
  3. [GLScene] Problème de textures
    Par Leobaillard dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2005, 18h06
  4. Problème de texture GLscène
    Par [Silk] dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2005, 18h29
  5. Problème de texture
    Par filousnt dans le forum OpenGL
    Réponses: 4
    Dernier message: 26/06/2004, 20h11

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