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 :

Filtre de texture qui ignore les "bords"


Sujet :

OpenGL

  1. #1
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut Filtre de texture qui ignore les "bords"
    Bonjour.

    Je travaille sur le reverse-ingenering d'un vieux jeux, et de temps en temps je me fais de petites pauses en m'amusant à tester des trucs rigolos.

    En ce moment j'essaye de réutiliser les tiles 2D pour reconstruire une scene en pseudo-3D.
    Mais j'ai un problème avec les filtres de textures. J'utilise par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    Ce qui donne le résultat suivant :


    J'en conclu que il faudrait toujour utiliser GL_NEAREST pour qu'il n'y ai pas d'espace inter-tiles.

    Mais je vous pose la question, existe-t-il une solution pour avoir des textures lissées, à partir du moment que le pixel voisin n'est pas transparent ? (parceque j'imagine que les intertices entre les tiles est causé par le fait qu'il interpole avec des pixels transparents)

    Merci pour vos suggestions.

    A bientôt.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Et avec ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

  3. #3
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    J'ai le même problème.

    Ma texture est une image de 64x64 comme ceci :


    Les zones en noir correspondent à du transparent. J'aurai voulu que lors du lissage, opengl conserve les frontières des zones opaques.

    Mais je ne sais pas si c'est possible. Peut-être existe-t-il une astuce pour contourner ce problème ?

    En tout cas merci pour ta suggestion.

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Difficilement,

    A l'interpolation, OpenGL va mélanger les valeurs opaques et les valeurs transparentes..

    Tu pourrais recréer toi-même les différentes mip-maps et passer par des mip-maps.

    Mais ce sera un peu compliqué, vu que tu reprends les textures.

    Je pense que la seule solution sera de laisser la texture telle quelle et utiliser un frustrum pour afficher que le nécessaire.

    Tiens nous au courant, ce vieux jeu était un de mes préférés

    Jc

  5. #5
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    En fait même sans aller jusqu'à refaire des mipmaps, c'est la fonctionnalité de lissage (qui peut ne pas dépendre des mipmaps il me semble) qui m'intéresse beaucoup.

    Je vous tiens au courant si je trouve un moyen de contourner le problème.

    Merci pour votre aide.

    [EDIT]

    Bon voila le résultat (pour l'instant) :



    J'ai choisi de pré-lisser la texture en prenant en compte, dans la moyenne, les pixels opaques uniquement et en écrivant le résultat dans les pixels transparent uniquement.

    C'est pas génial et il faudra trouver mieux pour plus tard (les grilles on vu leur trous bouchés à cause de cette solution).

    A bientôt !

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

Discussions similaires

  1. [XL-2007] une macro qui ignore les colonnes masquées
    Par hamiiiz dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2011, 15h12
  2. Requête qui ignore les doublons
    Par Hypnocrate dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/11/2010, 20h24
  3. Réponses: 7
    Dernier message: 18/11/2009, 00h47

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