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 :

Découpage d'une grande image vers des textures


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Découpage d'une grande image vers des textures
    Voici mon pb:
    Je veux faire un jeu en 2D genre Zelda 1 avec un moteur 3D pour faire des bons effets.
    J'ai une image (banque de mosaïques) de 640x480 contenant des petites mosaïques de 32x32.
    Je veux afficher un niveau de mon jeu avec chacunes de ces petites mosaiques. Quelle est la méthode la plus propre pour l'affichage du niveau:
    Charger chacune des petites mosaïques dans des textures de 32x32 (sachant qu'il peut y en avoir des centaines) ou bien aller chercher la bonne partie dans mon image et la copier dans une texture puis l'afficher ?

    Merci si vous me répondez !

  2. #2
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    fais une grande texture et découpe la avec les coordonnées de texture à l affichage
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Ben zut alors !
    Mais je croyais qu'il fallait que les textures soient des multiples de 2 ?

  4. #4
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    cela n'empèche pas qu elle soit multiple...
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    tu entendais multiple de 2 ou multiple dans le sens pleins de texture de la même image ?

    Sinon si c'était multiple de 2, alors tu penses que je dois faire une image de 1024x1024 qui contiennent mes mosaïques ? Jusqu'où peut on aller dans la taille ?

  6. #6
    Membre habitué Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Points : 145
    Points
    145
    Par défaut
    1024*1024 ne sera peut etre pas pris sur des configs anciennes.
    Essaie plutot avec plusieurs textures 128*128 ou 256*256

  7. #7
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    taille maxi d'une texture dépend des cartes graphique tu peux avoir c infos normalement avec gl mais je connais pas le code par coeur...

    ex sur ge-force ti 4800SE taille maxi : 4096*4096
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  8. #8
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    les textures ne doivent pas etre multiple de 2 mais PUISSANCE de 2... ca change pas mal de choses...

    sinon si tu utilise gluBuild2DMipMap, pas besoin de cette limitation car cette fonction etend la texture en memoire pour que ca passe... Mais bon, il est preferable d'avoir directement une texture dans la bonne resoilution...

    Pour le truc de decouper la texture en plusieurs petites textures, c'est pas une bonne idée car ca va multiplier les appels a glBindTexture() qui sont relativement couteux (ainsi que las appel a glBegin()/glEnd()). Il est donc preferable d'avoir une texture et d'aller chercher les info dedans.
    Cependant, cette methode presente un desaventage, c'est qu'avec le filtrage de texture, tu peut voir apparaitre le bord de l'image d'a coté sur ton image...
    * 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

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Haarg !
    Haarg Le filtrage avec les bordures qui apparaissent !!! Exactement ce que je ne veux pas ! Comment on enleve le filtrage ?!

  10. #10
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    je voit 2 solution pour resoudre le probleme de filtrage :
    - soit tu ne map pas tes texture exactement sur le bord mais un peut vers l'interieurdu carré (du coup le filtrage filtrera des pixels qui font partie de la texture) mais tu perd un peut en taille de chaque sous image
    - soit tu desactive le filtrage (en fait tu met le filtrage a GL_NEAREST) du coup pas de probleme de filtrage.

    pâr contre je vient de pensé a un autre probleme : les mipmap... si ta texture s'eloigne, elle sera reduite et du coup tes differentes image seront melangé entre elle... le solution serait de ne pas utiliser non plus de mipmap...
    * 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

  11. #11
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    si il fait un jeu 2D je capte pas pk il aurait c problèmes...
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  12. #12
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Soit tu places tes textures avec quelques pixels de couleur transparente qui délimite les carrées de texture dans ta grosse texture. Soit tu load plein de petites textures....

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Merci !
    Je crois que je vais simplement découper ma banque de mosaique de 512x1024 (ce qui me fait 512 mosaïques) en 8 textures de 256x256 ensuite je ferais un texturing directement avec les coordonnées de textures... Sans filtrage (GL_NEAREST) ! Merci les gars c'est bien cool ! Je vais maintenant mettre tout ça en place... J'en suis actuellement loin (mais je l'ai déjà codé en Direct3D mon jeu, donc c'est juste une reconversion améliorée) ... J'arrive pour l'instant pas encore à mettre un color key dans l'affichage de mes textures. C'est po gagné...

  14. #14
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    oups... j'avait oublié qu'il faisait un truc en 2D donc effectivement il n'a pas tout ces problemes...

    par contre si tu decoupe tes textures, du coup tu peut activer le filtrage sans problemes... mais si tu dessine tes texture en resolution 1:1 (1 pixel = 1 texel) alors la autant passer en NEAREST...

    sinon pour colorer une texture (je suppose que c'est ce que tu veut faire) il suffit de mettre un glColor3f(R,G,B); avant de dessiner et surtout ne pas oublier de charger tes textures en GL_MODULATE et non pas en GL_REPLACE
    * 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

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Non en fait je voulais juste changer la couleur de fond de ma texture pour ne pas afficher tout le fond quand j'affiche ma texture, mais merci pour glColor3f ! ça m'aide pour autre chose...

Discussions similaires

  1. Impression d'une grosse image vers un pdf
    Par JoSii dans le forum C#
    Réponses: 7
    Dernier message: 26/08/2008, 11h12
  2. [FPDF] PDF avec une grande image de fond
    Par Gyl59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/11/2007, 19h00
  3. Affichage d'une grande image dans un composite SWT
    Par Jibouze70 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/07/2007, 11h51
  4. Affichage d'une grande image découpée
    Par cyril_sy dans le forum SDL
    Réponses: 6
    Dernier message: 03/11/2006, 22h03
  5. [IHM]afficher une grande image
    Par hansaplast dans le forum wxWidgets
    Réponses: 5
    Dernier message: 02/06/2006, 14h59

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